• Что за чудеса творится с исключениями php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Ошибка != Исключение. Это 2 разные сущности.

    set_error_handler() посмотрите.

    catch(Exception $e) - создаете ошибку а ловите исключение. чтобы поймать исключение нужно его выбросить через throw

    ваш код правильнее будет выглядеть так
    try{
       $a = 1;
       $b = 0;
    
       if ($b != 0){
           echo $a/$b;
       }
       else {
           throw new Exeption('Division by zero');
       }
    } catch(Exception $e){
      echo 111;
    }
    Ответ написан
    3 комментария
  • Что за чудеса творится с исключениями php?

    @Nc_Soft
    Потому что варнинг это не исключение..
    upd
    <?php
    set_error_handler("warning_handler", E_WARNING);
    
    echo 1/0;
    
    function warning_handler($errno, $errstr) { 
    	throw new Exception($errstr);
    }
    Ответ написан
    2 комментария
  • Для чего нужен отдельный пустой класс с исключением (Exception)?

    @Arik
    Чтоб понять откуда ноги растут ошибок и как на них реагировать. Допустим завтра захотите в отделный лог писать все ошибки работы mysql, а у вас уже класс готовый

    Exception // ошибки в php, скорее всего не в твоем коде в левых либах и т.д.
    
    class AppException extends Exception // ошибка в твоем приложении
    
    class MySqlException extends AppException // ошибка в твоем приложении, а именно в работе с базой
    
    class ControllerException extends AppException // ошибка в твоем приложении, а именно работа контроллера
    
    // и т.д.
    Ответ написан
    Комментировать
  • А какой ваш путь изучения ЯП?

    TekVanDo
    @TekVanDo
    Javascript Developer
    Язык программирования и быдлокодер это разные плоскости, писать плохо или хорошо можно на любом. Чтобы писать нормально - нужно читать. Сам начинал с php потом перешел на c#, но последний год мне интересен javascript.
    Ответ написан
    7 комментариев
  • Как прогреть IP SMTP сервера?

    oia
    @oia
    надо прописать в днс SPF звпись и DKIM , а то что выше прогреть сервер бред
    Ответ написан
    Комментировать
  • Какой смысл в использовании шаблонизаторов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Шаблонизатор шаблонизатору рознь. Но в целом следует выделить общие задачи. которые должны решать за вас шаблонизаторы. С blade не работал и не вижу смысла есть есть twig.

    Безопасность. Это пожалуй можно поднять на верх. Типичная картина в шаблонах на php - <?= $someUserInput; ?>. Частенько это можно встретить в выводе инпутов, при формировании ошибок поиска (мол "по запросу $userInput ничего не найдено. То есть вставляем в инпут подключение наших js скриптиков, если это форма поиска - делимся с "другом" и забираем его сессию. Ну или еще какие забавные штуки можно делать. А ведь все очень просто решается. Ставим какую-то функцию, которая по умолчанию будет фильтровать XSS инъекции при выводе, и не будет этого делать только если мы попросим. Если писать просто на php - появляются отвратные функции, которые можно просто забыть вызвать. А с шаблонизаторами мы пишем красивые {{ someUserInput }} и можем спать спокойно.

    Помогают соблюдать принцип DRY. Современные средства шаблонизации (twig например), предоставляют вам возможность разделять шаблоны на блоки, переиспользовать их несколько раз, выделять макросы, наследовать шаблоны... словом все что угодно. лишь бы вы могли реюзать куски html а не копипастить их.

    Ограничивают полет фантазии разработчика. Далеко не новость что разработчики ленивые засранцы. Особенно молодые. Если им в шаблоне внезапно понадобились какие-то данные из БД, или данные связанные с запросом, большинство не будет париться и зафигачит нужный код прямо в темплейте. Так же некоторые грешат тем что часть бизнес логики размазывают по шаблонам. Так же встречал проекты отданные на суппорт, где чуваки в шаблонах разбирали через xpath ответы от сторонней апишки (которая использовалась вместо базы данных. То есть это дело было размазано по всему проекту). Рефакторинг в случае изменения апишки будет болью.

    Хороший шаблонизатор должен настолько сильно усложинить вам процесс написания говнокода в шаблонах, что бы вы перехотели это делать и подумали как это можно сделать нормально. На выходе же мы имеем чистенькие шаблоны, которые ничего не знаю о бизнес логике приложения и знают только о логике отображения, чего мы и добиваемся вообще разделяя логику от представления. Это так же упрощает жить верстальщику (если он отдельно существует) или вам же в будущем при суппорте.

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

    Так как за все эти приятные вещи мы по сути ничего не платим (шаблонизатор должен компилировать все это в нативный php так что оверхэда просто не будет), почему бы не пользоваться?
    Ответ написан
    1 комментарий
  • На чем написан Zopim?

    Prognosticator
    @Prognosticator
    TODO: Здесь будут ворованные умные мысли, типа мои
    v2.zopim.com/?zopim - js, но он возможно сформирован еще чем-то

    не поленился и задал вопрос поддержке ) что и вы могли сделать, вы же не копии исходников просите

    say on what technologies make your chat, besides javascript?

    и ответ они не заZopiли

    We've used Ajax, Python, Javascript, Flash, C# and HTML5
    Ответ написан
    Комментировать
  • Почему не работает функция foreach c PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Прекрасный, прекрасный пример того, что такое эти Q&A сайты.
    Ну неужели жалкий ручеек тафика, состоящего из убогих и ламеров всех мастей, стоит того, чтобы терпеть это позорище?

    Вопрос, который к ПДО имеет такое же отношение, как я - к балету, и - самое главное - ответы, прекрасно описываемые анекдотом про Вовочку "Я, конечно, не профессор..."

    Вопрос, код в котором принципиально не будет работать, поскольку аффтару надо либо крестик снять, либо трусики надеть, и опеределиться - нечеткое у него сравение (и добавить LIKE) или четкое (тогда убрать процентики).

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

    Ну и вишенка на торте - совершенно детская причина всех страданий - коварные переводы строк, возвращаемые file() по умолчанию.
    Ответ написан
    Комментировать
  • Как отображать в письме другой емайл отправителя?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    > проблемы с доставкой на доменах где настроена spf запись.
    Это здесь не при чём. "Проблемы" у вас возникают из-за корректно настроенных почтовых серверов на принимающей стороне.

    В остальном ваш вопрос так : "Как мне рассылать спам, и чтобы мне за это ничего не было". Ответ - никак. Шлите письма с принадлежащего вам From, настройте свой почтовик на работу с этим From и всё будет хорошо.
    Ответ написан
    Комментировать
  • C++14 имеет достаточно фич, что бы забыть о PHP?

    AterCattus
    @AterCattus
    Люблю быстрый backend
    Про объективность использования C++ это вам уже и так понаписали. Давайте растолкую про не устраивающую вас логику PHP. Правда в другом порядке.

    <?php $a = "2d9"; $a++; echo $a; → 2e0

    a — строка. Инкремент строки (которая не является записью в 10чной СЧ) выполняется по принципу Perl: «A»++ = «B», «Z»++ = «AA», «AA»++ = «AB». Вот и получаем «2e0».

    <?php $a = "2d9"; $a++; $a++; echo $a; → 3

    Если же строка содержит нечто, похожее на 10чную СЧ, то приводим к целому и инкрементируем. Второй инкремент дает «2e0» = 2*10^0 = 2. 2++ = 3.

    <?php $a = "2d9"; $a+=2; echo $a; → 4

    Арифметика без инкремента сразу приводит строку к числу, и мы просто считаем 2+2.

    Нормальная логика, если учесть, как PHP используется. Это как удивляться, почему инкремент short* увеличивает значение указателя на 2, а не «как должно быть» на 1 :)
    Ответ написан
    Комментировать
  • В чем существенная разница моделей Asus Zenbook UX32VD?

    mrspd
    @mrspd
    Не проще за такой ценник макбук какой-нибудь взять и накатить вин8 на него? :)
    Ответ написан
    2 комментария
  • Можно ли узнать mac-адрес сетевушки произвольного веб-сервера в интернете?

    @bondbig
    Мак-адрес относится к L2, а это значит, что за пределы отдельно взятого L2-сегмента (грубо говоря, за пределы ближайшего роутера) информация о мак-адресах не выходит, просто за ненадобностью, так уж устроена многослойная архитектура современных сетей.
    Ответ написан
    Комментировать
  • Какие 3D фильмы покупать?

    @ykochubeev
    Так как у LG технология 3D черезстрочная, то каждый глаз видит картинку с вертикальным разрешением 540 строк. Горизонтальное при этом так и остается 1920.
    Поэтому для LGлучше всего подходят вертикальные стеропары — у них как раз такое разрешение 1920х540.

    Если скачаете горизонтальную, то каждый глаз будет видеть картинку все теже 540 строк по вертикали, но при этом в иходном сигнале будет занижена в два раза горизонтальная четкость — до 960. В итоге в этом варианте картинка будет 960х540. Что явно жухе.
    Ответ написан
    Комментировать
  • Распознавание цифр на лету в приложении под iOS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Често признаюсь я далек от iOS разработки и решил начать изучение с написания, как мне кажется, несложного приложения.

    Удачи!!!
    Ответ написан
    Комментировать
  • Что такое «101»?

    @werwooolf
    Классы кодируются как 3-4 буквы предмета + 3 цифры уровня класса. Сотни в коде примерно соответствуют году обучения в 4-летнем колледже.
    1хх — freshhman (1 курс) — вводные классы
    2xx — sophmore (2 курс)
    3xx — junior (3 курс)
    4xx — senior (4 курс) — специализированные классы повышенного уровня сложности

    Студенту нельзя (или просто не рекоммендуется) брать курсы по номеру выше чем его год обучения.
    Для магистров и аспирантов классы будут соотвественно начинаться с 5хх-9хх.

    Десятки и сотни в номере обозначают разные классы, чаще всего нумерация идет в порядке увеличения сложности, или зависимости классов. Так, например, чтобы взять класс FIN345 («Финансы — средний уровень») нужно обязательно взять FIN302 — «Введение в финансы» и тп. А FIN445 будет наверняка на порядок сложнее чем FIN345.

    Итого, 101 — самый начальный воодный класс в любом предмете, например МАТ101 — введение в математику или BIO101 — введение в биологию.
    Ответ написан
    1 комментарий
  • Как с помощью PHP можно распарсить PDF?

    @egorinsk
    Как вы себе представляете такое преобразование, если в PDF текст хранится строками с определенными координатами, а не абзацами, например? Также текст может храниться картинкой или векторным форматом. Таблицы хранятся набором кусков текста и линиями. Заголовок — просто строка текста чуть большего размера.

    Чтобы восстановить логическую структуру текста, надо систему вроде той, которая используется в продуктах fineReader. Систем эта сложная и на ее разработку у Abbee ушла куча денег, вряд ли вы сможете решить задачу проще. А без этого максимум, что вы можете вытащить из файла — это набор блоков вида «строчка такого-то текста расположена по таким-то координатам». Текст может быть разбит переносами.

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

    Резюмируя, выберите другой исходный формат, или откажитесь от мысли преобразовать PDF в осмысленный текст, преобразуйте его в картинку например. Иначе вы всю жизнь будете дописывать костыли, как только кто-то захочет подснуть вашей системе текст, сверстанный другим способом.
    Ответ написан
    1 комментарий
  • Запретить скролл страницы когда мышь на флешке?

    @egorinsk
    Внимание, правильный ответ: не использовать скролл как способ ввода, тем более не использовать скролл во флешках, так как в разных браузерах это все конфликтует, а на айфоне флеш вообще не работает.

    Хочется также послать лучей проклятья тем умникам, которые придумали, что когда кликаешь на видео в ютубе, оно забирает фокус и горячие клавиши в браузере и прокрутка перестают работать.
    Ответ написан
    2 комментария
  • Возможна ли работа web-приложения без CGI?

    VBart
    @VBart
    Такие вопросы на хабре задавать бесполезно. =)

    Большинство ответивших написали местами полную чушь. Основная масса веб-программистов дальше своих фреймворков не вылезают, и у них в итоге полная каша в голове. Например, кто-то путает интерфейс (WSGI, Pump, WEB3, PSGI, Rack, CGI и т.д.), сервер приложений (uWSGI, php-fpm, Rack, Gunicorn, unicorn, flup, Apache в данной роли, и ещё тысячи их) и протокол (HTTP, uwsgi, FastCGI, SCGI, CGI, AJP, WebSocket, да много их). Кто-то путает протокол, способ его реализации и способ запуска интерпретатора.

    Основное, что вам нужно знать, содержится в документации Django:
    docs.djangoproject.com/en/dev/howto/deployment/

    Ответом на ваш вопрос будет: да существует множество и каждый HTTP-сервер поддерживает целый набор протоколов для общения с сервером приложений. И сервера приложений могут поддерживать один или несколько протоколов, один или несколько интерфейсов. Некоторые HTTP-сервера умеют выполнять двойную роль, выступая и в роли сервера-приложения, предоставляя определенный интерфейс. А некоторые приложения сами содержат встроенный HTTP-сервер. Термин же «веб-сервер» слишком общий, и трактоваться может разными способами.
    Ответ написан
    2 комментария
  • Браузер для ipad не выгружающий вкладки?

    deleted-mifki
    @deleted-mifki
    Так там же есть встроенный Reading List.
    Ответ написан
    2 комментария