shardik_rus, "поставить на сервер панель управления" - это нечто сугубо противоположное "закрыть дыры в безопасности".
И забыть про нее можно только в том случае, если вас не волнует, кто, кроме вас, будет ей пользоваться.
Обновить - возможно. Будет ли работать - не факт. Более свежие версии серверов предполагают некоторое изменение настроек, так что могут перестать работать правильно.
В "просто огромен" вы Г с Т не спутали?
Алексей Потапенко, а что вы собрались ловить от file_get_contents? Это сишная функция, она не выбросит никаких исключений, молча вернет false - и все.
Соберите свои урлы в массив и перебирайте его в цикле. Если ни один не вернет осмысленного - тогда решайте, как дальше жить.
Тем не менее, если в случае любой ошибки выполняется один и тот же сценарий - прерывается выполнение скрипта и возвращается сообщение пользователю - то логично разруливать ошибки именно исключениями, а не кодами возврата.
Системные ошибки, которые не хочется светить, решаются введением подкласса исключений и раздельного перехвата его и всех остальных. Соответственно, с выводом для остальных сообщения "внутренняя ошибка" вместо лишних деталей.
ittakir, если ваши проекты умещаются на экране целиком - что ж не пересобрать...
Если код будет читать не случайный человек, а программист, то простыня инклюдов любой длины займет у него максимум полсекунды на прокрутку вниз.
В результате изменение в одном (возможно, второстепенном) заголовочном файле вынудит пересобираться весь проект. Bad practice.
Никакого смысла "жалеть строчек" в исходниках нет.
Очевидно, в самом интерфейсе ArmyVisitor должен быть заявлен метод visit{Имя того класса, которому принадлежит метод accept} - тогда любой его наследник должен этот метод реализовать, и IDE за этим проследит.
Просто подробное сообщение об ошибке нецензурно, вот и не выводится.
А как цензурно объяснить человеку, кто он, если пытается подключиться к БД, но даже название ее не указывает?
Passionare, так я и ответил, как организовать, просто это не совпало с твоими мечтами. Сделай проект, которым кто-нибудь заинтересуется - тогда и гляди с надеждой на опенсурс. А мечтать о том, какая крутая у тебя идея и как вокруг много желающих над ней пахать, можно столь же бесконечно, сколь и безрезультатно.
Dubrovin, можно, собрав все "длинные" классы, которые получились, отсортировать этот список и оставить только первые символы, отличающие каждый из них от предыдущего. В основном получатся имена не длиннее нескольких символов.
Шли десятилетия, а виндовские штатные дрова для видеокарт так и не умели поддерживать OpenGL из коробки.
Поставьте нормальный драйвер видео от производителя.
Это не С++, это С.
В С++ логично сначала определить класс книги, заодно задав ему оператор сравнения.
Потом, получая данные, определять, относится ли книга к заданному времени, и если да, то заносить ее в вектор объектов класса книга.
Затем отсортировать этот вектор одной командой и вывести циклом.
Dubrovin, я ее и дал вторым вариантом. Ничего не удаляется, берете хэш 7d50b03b3e72815544fb16bdf4bf8c61
и элементарной заменой превращаете его в ndlgbgjbjeniohllkkfbhmbdfkbfocmh
Dubrovin, ну, раз это для вас проблема, лучше обойдитесь символами a-zA-E - будет 32 варианта.
Заменяете каждые 5 бит хэша на соответствующую букву - и все. Просто получится немного подлиннее.
Или, если и это для вас сложно, самый козырной алгоритм: берете hex-строку md5 и тупо заменяете 0-9 на g-p. Получаете строку из одних только букв...
Так в MD5 и нет "цифр и спецсимволов". Хэш - это набор битов. Просто обычно выводят их hex представление.
Можете взять хэш от строки любой популярной функцией и записать его в своей 52-ричной системе.
И забыть про нее можно только в том случае, если вас не волнует, кто, кроме вас, будет ей пользоваться.