- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
<?php
$file_name = 'http://www.****';
//$html_string = @file_get_contents($file_name);
ob_start();
readfile($file_name);
$html_string = ob_get_contents();
ob_end_clean();
?>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+159.7
<?php
$file_name = 'http://www.****';
//$html_string = @file_get_contents($file_name);
ob_start();
readfile($file_name);
$html_string = ob_get_contents();
ob_end_clean();
?>
копаю проект, на котором идет загрузка данных из инета...
хваталка там про жесть .... автор решил, что использовать одну функцию будет слишком просто ...
хотя отчасти я его понимаю... скорее всего все жутко тормозило...
сам в детстве так ошибался, если дергаешь из инета стандартными средствами что-нибудь, то там нельзя задать таймаут. и если тебя вдруг забанили, то вся дергалка виснет обычно минуты на полторы-две. А то, что мы тут видим - это танцы с бубном, а вдруг заработает... не люблю когда так делают :(
PS: ну если @ в коде встречается - то автора можно сразу добивать чем-нибудь тяжелым... особенно сильно хотелось это сделать, когда убил часов 10 на поиск места, где происходит ошибка и почему выводится белый экран...
llllllllll 03.11.2009 12:41 # +2
sudden_def 03.11.2009 13:26 # 0
interested 03.11.2009 13:59 # +3
Исключительные ситуации действительно нужно обрабатывать, иначе зачем они нужны. Другое дело КАК обрабатывать и КАК ловить. Поставить тяфку, ещё не значит отказаться от обработки исключения. Функция может сама вернуть код ошибки или вернуть false, а сама ошибка может быть получена с использованием другой функции. Кроме того тяфка может помочь в том случае, когда вас не устраивают приводимые ошибки. Например функция, которая возвращает false при неудаче, но вас ещё и не устраивает пустая строка. Тогда вы их можете обработать вместе, заглушив оригинальную ошибку тяфкой.
Тяфка -- это не отказ от обработки ошибок, а возможность обработать исключительную ситуацию по-другому.
PHP предоставляет достаточную свободу действий. Вы вольны выбрать метод, дать PHP выбросить ошибку или обработать ответ функции.
А вот если её (тяфку) некорректно используют -- это уже проблема программиста.
try catch блоки сами по себе не так уж и плохи, но можно использовать их во зло:
Возможность такого использования не говорит о том, что их нужно в топку...
sudden_def 03.11.2009 14:03 # 0
llllllllll 03.11.2009 14:25 # +1
В текущей реализации PHP часть стандартных функций при возникновении исключительной ситуации _всегда и независимо ни от чего_ дополнительно генерируют ошибку помимо возврата кодов ошибок. Естественно, ошибка попадает в еррор-лог независимо от того, обработана она в коде или нет. Подобное поведение стандартных функций в ряде случаев вынуждает использовать тявку - давить лишнюю ненужную генерацию ошибки, которая будет обработана.
Одним из решений этой проблемы может быть введение вброса исключений стандартными функциями PHP.
И опять же, использование инструмента не в том месте не по назначению - проблема не инструмента, а использующего его.
Yozheg 03.11.2009 18:19 # +1
А кто нам мешает перехватывать эти ошибки и бросать по ним исключения??? К примеру, я это делаю так:
nicolay-punin 03.11.2009 22:24 # 0
это тогда придется писать почти идеально, чтобы с такой конструкцией все конкретно работало...
да и библу ты какую-нибудь врядли в этом случае заюзаешь... если внутри там вварнги есть...
Yozheg 03.11.2009 22:30 # 0
И кстати, пишу исключительно с включенным E_ALL, чего и вам желаю. Потраченная минута на заштопку нотисов и ворнингов дает выигрыш часов при поиске багов в дальнейшем.
nicolay-punin 04.11.2009 12:21 # 0
interested 04.11.2009 09:43 # 0
Почему вы выбрали его, а не Java или C#?
nicolay-punin 04.11.2009 14:30 # 0
уж извините, я не выбирал на чем мне писать... такова жизнь ....
это не значит, что php как язык плох, я думаю временами он очень не плох, особенно версия 5.3
хотя по ночам я мечтаю о java или о С++ ... давно в них ничего не писал....
interested 04.11.2009 14:56 # 0
Но ваш ответ явно говорит о том, что мой вопрос требует пояснения.
В современном мире есть огромное множество языков. Каждый волен выбрать тот, на котором он будет писать проект, каждый и выбирает язык. Начиная изучать PHP, вы думали о чём-то, вы начали изучать и создавать проекты на нём с некоторой целью.
Так вот вопрос в том, что именно двигало человеком, когда он начал изучать PHP.
Жизнь за вас ничего не выбирала. У вас была задача и вы начали её решать, выбирая средства.
Только в школе "заставляют". Меня "заставляли" программировать на бейсике и паскале....
Правда вот друга моего сейчас "заставляют обстаятельства" программировать на фортране, но это отдельная история.
nicolay-punin 04.11.2009 16:01 # 0
ссори, не сразу глянул на вложения... вопрос был после моего коммента .. извини, что влез не в свое дело...
>>Так вот вопрос в том, что именно двигало человеком, когда он начал изучать PHP.
ну раз уж пошел разговор, простите меня, я отвечу более развернуто
у нас в обществе есть несколько стериотипов,
например, если сайт, то это конечно php, не java, не си, а именно php ... надо отдать должное разработчикам php, что их язык добился таких вершин...
простейшая ситуация, тебя просят сделать сайтик, на чем ты будешь его делать ? да согласен, можешь сам выбрать на чем... пойдем дальше, где его размещать?
если писать будешь на Си - это одни сложности, если на JSP - то стоимость размещения безделушки будет в разы отличаться от стоимости размещения php-хостинге...
поэтому если просят сделать сайт - делаешь его на php ...
так вот, вопрос в том, что пишешь на том и решаешь те задачи, за который в данный момент платят...
interested 04.11.2009 16:32 # 0
Ничего страшного.
Проекты бывают разные. Это да. То есть, в зависимости от проекта вы выбираете инструмент. Если проект крупный и дорогой, то вряд ли встанет проблема решать ли его на JSP ASP PHP из-за хостинга, тут будут играть факторы устойчивость расширяемости поддерживаемости и т.д.
Если проект небольшой или "скорый", то тут вопрос о том кого быстрее можно найти и как "испечь" проект или как создать его подешевле.
PHP охватывает достаточно большой спектр задач, от вопроса гостевой книги или маленькой CMS для сквоттеров до действительно крупного проекта вроде социальной сети или многопользовательского игрового мира. В этом и его сила, и причина распространённости. А ещё относительная простота.
Я начал прогать на PHP, потому что сделать на Java маленький проект просто дорого и искать потом тех, кто будет его поддерживать сложнее, PHP дешевле.
nicolay-punin 05.11.2009 10:33 # 0
Но я продолжаю мечтать о лучшем ))
некоторые вещи в php меня добивают ... точнее добивает, что можно "так" делать, а значит растет сообщество быдлокодеров, которые делают только так...
interested 05.11.2009 11:07 # 0
Всё же это достаточно разные вещи. Java поддерживает одну парадигму, а C другую, при этом не просто поддерживают, а основаны на ней.
>Но я продолжаю мечтать о лучшем
Нужно пытаться двигаться. Изучите язык, приёмы, попробуйте приложиться. Будете создавать Java-applets для удобства пользователей. =]
А вот на C приложиться в сфере создания сайтов уже сложнее. =[ Это скорее язык "демонов". Крупное приложение на C -- это слишком затратно.
>работаю там, где все пишут на php
Да уж...
Мне PHP был удобен простотой и лёгкостью выполнения поставленных задач в смысле серверных сценариев. Написать сценарий на C -- это подвиг. Нам показывали один древний движок форума, написаный на C под Apache cgi , возможности слабые, а код умопомрачительный... Но это что-то очень старое, когда альтернатива только Perl. Нам показывали для устрашения и внушения уважения к тем, кто начинал программировать такие вещи.
А сейчас форум может и школьник написать на PHP без проблем.
nicolay-punin 05.11.2009 12:29 # 0
это своя ниша, где важна производительность...
ссори, я думал парадигм не так много как языков... есть процедурно-ориентированная, есть объектно-ориентированное... остальное конкретные элементы языка или его библиотек... ну и может быть чуть-чуть другой синтаксис...
а так вообще какая разница...
Yozheg 06.11.2009 09:03 # 0
Я вообще электронщик, писал прошивки для контроллеров и ПЛИСин на ASM и AHDL - отсюда базовые знания программинга. Наверно отсюда же любовь к чистому коду :). В какой-то момент небольшой группой лиц по предварительному сговору взяли и сделали сайт по электронике. У меня на тот момент было знание хтмл, немножко флеш, но только на уровне нарисовать и разверстать. Очень быстро стало понятно, что для того чтоб сделать хороший сайт, нужно что-то бОльшее. Короче, выучил пых, жабаскрипт, экшнскрипт, че там еще... мускуль... Ну и в результате даже на работу устроился веб-программером :) Затянуло...
В принципе, я знаю Жаву, не на уровне гуру, но если Родина прикажет - буду писать на ней. Но пока у меня для себя нет прикладных задач, для которых это нужно - а значит, и нет стимула углубляться. И с материальной точки зрения, пыховым прогерам не сильно меньше платят, чем тем же жавистам :)
А C# вообще не знаю и не хочу. Не люблю мелкомягких и их быдлотехнологии.
nicolay-punin 07.11.2009 18:17 # 0
зачед ))) поддерживаю...
interested 07.11.2009 19:21 # 0
nicolay-punin 08.11.2009 14:33 # 0
А чем Java плохо? там столько уже сделано. бери да используй...
в принципе идеи C# - целиком содрано с java.
И почему windows - есть же mono...
interested 08.11.2009 14:58 # 0
Ничем не плохо. Но и ни одного преимущества у Java нету. Скорее есть недостатки: не разместить классы в стеке или создать быструю работу с прямыми массивами без необходимости поддерживать проверки и технологию "удлиняемого массива". (указатели в unsafe fix блоках). Последнее очень может пригодиться для работы с графикой.
А MS .NET среда разработки -- это сразу вам и компилятор в MSIL, и огромный набор инструментов, и библиотеки от производителя ОС, и многое другое. Плюс оптимизационные возможности "компилятора на лету". Ни секунды не сомневаюсь, что на C# под Windows будет писаться быстрее и более производительно, чем на Java. Просто многие технологией C# пока банально пренебрегают.
>И почему windows - есть же mono...
Да, пожалуйста. .NET технология не зажата рамками Windows. Однако уже никак нельзя говорить о "библиотеках от производителя".
nicolay-punin 08.11.2009 15:17 # 0
Но на счет библ - по спорю, у Java набор каких либо решений шире, больше, причем, если чего-нибудь не устраивает, то всегда есть альтернативы...
на счет классов в стеке - спрашивается нафига ???
на счет "удлиняемого массива"... извините меня, это как-то странно мерять два языка одной небольшой оптимизацией... если уж на то пошло, и нужно оптимизировать какой-то код, или использовать функции системы, то в java можно вкомпиливать си-код...
менеджеры процессов, анализаторы памяти в том-же netbeans именно так и сделаны...
interested 08.11.2009 15:56 # 0
Если есть конкретная задача, тогда выбор можно делать. Никаких явных преимуществ у Java нет, зато есть мелкие недостатки.
Да, из Java построены города. Но всё, что может быть необходимым в C# тоже уже есть, благо MS на это не пожалело ресурсов.
nicolay-punin 08.11.2009 16:07 # 0
чтобы строить города из MS технологий, нужно денег немерянно....
про лицензию не забыли?... одна винда стоит дофига, а к ней ещё офис (ну какая система без отчетов, и без офиса...) и много чего там...
interested 08.11.2009 16:29 # 0
Денег "немеряно" не нужно. Нужно около 13 000 р. на одну рабочую станцию в офисе. Дома, мне обошлось в 11 500 на два компа: XP Home + Office 2007. Сколько не заглядывался в терминалы кофеен, ресторанов, торг. сетей -- везде Windows в различных вариациях. Значит деньги у бизнеса находятся. А фреймворк уже в системе. Почему бы и не написать на C#? Кроме того должна отпасть проблема совместимости версий Windows, так как совместимым должен быть только .NET, который MS может дописать легко для своей же пользы.
Как ни крути, а никаких явных недостатков у C# нет.
Я вообще никого не поддерживаю и не выделяю. Если есть момент, где что-то можно успешно использовать, то пожалуйста. Но ужасно раздражает, когда бессмысленно что-то отвергается из каких-то "религиозных" побуждений.
nicolay-punin 08.11.2009 16:40 # 0
56x13000 = 728000 - почти круглая сумма, а спрашивается за что ?? этих денег можно было б не платить.... пусть даже опен офис хуже, ворда, есть еще много всяких пусть...
проще было найти одного админа, который бы всем бы сделал и следил за той же убунтой...
все у всех работает и везде красота... и экономия на лицо...
interested 08.11.2009 15:00 # 0
guest 13.11.2009 14:29 # 0
nicolay-punin 03.11.2009 22:36 # 0
но я все-таки выступаю за отказ от нее... ведь goto тоже есть, но это не значит, что его нужно пихать направо и налево...
для меня @ - эток как goto вместо циклах... можно долго религиозно спорить, но экспертами давно доказано(ссори что не привожу ссылку, искать долго, но точно где-то видел), что оно зло...
например, где можно заюзать её
$f= fopen('a.txt','r');
if($f) ....
если файла не существует, то кидается вваринг... прямо-таки не разрешимая ситуация...
для любителей Си-стиля - да...
но вообще-то есть функции is_file() или file_exists() - проверка которыми позволяет избегать вваринга...
собственно баш на баш.... но можно найти случаи, когда своевременное сообщие вваринг облегчит поиск причины неполадки...
Yozheg 03.11.2009 22:39 # 0
nicolay-punin 04.11.2009 15:39 # 0
если timeout или не правильный адрес... тогда он пихает аж две штуки...
но это исключительные ситуации, их нельзя подавлять... о них нужно иметь запись в журнале, чтобы видеть каритну происходящего...
тут все нормально продумано...