• Soap - 400 bad request. В чем может быть проблема?

    @alekssamos
    Программист любитель
    Ошибка в самом классе. В запросе есть лишние пробелы (отступы), их быть не должно.
    Нужно делать по-другому:
    $SOAPRequest = 'POST /webservices/typograf.asmx HTTP/1.1' . "\n" .
                            'Host: typograf.artlebedev.ru'  . "\n" .
                            'Content-Type: text/xml'  . "\n" .
                            'Content-Length: ' . strlen ($SOAPBody)  . "\n" .
                            'SOAPAction: "http://typograf.artlebedev.ru/webservices/ProcessText"'  . "\n\n" .
                $SOAPBody;
    Ответ написан
    1 комментарий
  • Почему у root'а не хватает прав доступа???

    sim3x
    @sim3x
    sudo apt-get install -f
    sudo apt-get purge mysql-server


    Если не поможет - читайте логи, что там произошло

    Команда
    find / -iname ‘mysql*’ -exec rm -rf {} \;
    правильно пишется так
    find / -iname ‘mysql*’ -delete +но так, естественно никто не поступает, если нет желания удалить свои исходники

    Советую больше никогда не запускать такие команды из непроверенных ресурсов
    Ответ написан
    Комментировать
  • Как определить широту города на карте?

    php10
    @php10
    Разработчик на PHP
    Геокодер Яндекса это умеет.
    Ответ написан
    2 комментария
  • В чем особенности HDD диска для серверов, NAS и RAID? Стоит ли использовать его как основной для комьютера?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Да уж, ну вам и насоветовали)))
    Обе ваших ссылки для системного диска не подходят чуть более чем совсем!
    Как можно советовать их вообще??!!
    Скорость 5400rpm!! васЬ! Это архивы, видеонаблюдение и тд.
    Red более ударопрочный, а по сути одно и тоже, голый маркетинг!

    Ищите 7200rpm, ну а так-то ssd уже давно у любого кто хоть чуть-чуть работает на компе... Игрушки отдельная песня.
    Как вообще в декабре 2017 можно системным советовать 5400rpm??!!!
    Ответ написан
    Комментировать
  • А Вы встречали гениев-программистов?

    @AnneSmith
    самая ленивая
    гении не будут тратить время на ваши тесты, найдутся компании, которые их возьмут на лучших условиях и без ваших унижений
    Ответ написан
    4 комментария
  • Как выполнить SELECT, если количество параметров неизвестно?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Можно ли пустить ток?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Можно ответить тупо: раз ваши параметры выше допустимых, то нельзя, и баста. Но для самодельщика это не очевидно - слишком много привходящих обстоятельств, и как говорится, если очень хочется, то можно.
    Скажем, напряжение важно только при разрыве контактов (разрывная искра/дуга), и если втыкать/вынимать без тока, при выключенном внешнем питании, то ваши 5 или 30 вольт (а то и 220) - без разницы. Насчёт тока - тоже есть нюансы. Одно дело - ток через контакты: если гнездо обжимает штырь с нескольких сторон и вдобавок поверхности позолочены, то даже если штырь тонкий, через него можно пропущать пару ампер. Другое дело - ток через провод и его соединение с контактом. Если конструкция разъёма принципиально сделана под тонкий провод, да ещё под обжим, а не пайку, то ток лучше не превышать. Если же проигнорировать штатный способ и подпаяться более толстым проводом, то опять-таки можно превысить до той же пары ампер.
    Все эти соображения - чисто из практики, довольно богатой. Но решать вам.
    Ответ написан
    Комментировать
  • Как отследить какой скрипт посылает запросы mysql?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    на функцию запроса пропишите debug_backtrace с выводом в файл. У вас же есть отдельная функция на построение /выполнение запроса?
    Ответ написан
    Комментировать
  • Как объяснить рядовому клиенту, что сайт, сделанный руками, а не на шаблоне, для него будет лучшим выбором?

    @mamayama
    Зачем вы хотите навязать человеку вещь, которая ему не нужна?
    Ручной вариант - нааааааааааааааааааааамного дороже, а он не окупится, ведь, о, мальчик, живущий в Сети - у большинства людей весь бизнес в реале, и его прибыль не зависит от сайта.


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


    Если конкурентом вашей команды являются школьники, подрабатывающие по вечерам - то грош цена вашей команде.


    Команда, подобная описанной выше - должна решать очень серьезные проблемы клиентов. До которых школьникам как до Луны.
    Ответ написан
    1 комментарий
  • Как объяснить рядовому клиенту, что сайт, сделанный руками, а не на шаблоне, для него будет лучшим выбором?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    > Как вы, уважаемые коллеги, объясняете своим заказчикам, что проект, созданный командой разработчиков (UX-дизайнер, верстальщик, программист и т.д.) будет заведомо лучшим выбором, нежели, чем тот, который собран на коленках школьником вечером после уроков быстро/сердито/дешево?

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

    > "Как объяснить рядовому клиенту, что сайт, сделанный руками, а не на шаблоне, для него будет лучшим выбором?"

    Сперва убедитесь, что именно ВЫ понимаете, что хочет клиент. Например вы сможете с цифрами доказать, что сайт, созданный вами с нуля повысит продажи клиента на 10%, а сайт на шаблоне не повысит? Вы точно это сможете сделать? Если нет, то зачем клиенту знать какие кишки внутри сайта, если он выполняет свою бизнес задачу за минимальные деньги?

    > Рынок буквально переполнен дешевыми предложениями о создании сайтов (лендингов, интернет-магазинов и т.д.), которые созданы на универсальных шаблонах к WP/Joomla или конструкторах Wix/Lpgenerator/и т.д. Стоимость таких предложений довольно низкая. Рядовой клиент все чаще выбирает исполнителя по наименьшей цене.

    И правильно делает. Зачем для сайта-визитки среднестатистической компании что-то еще? Для ИХ БИЗНЕСА, этого ДОСТАТОЧНО, и понятно, что чем ниже цена, тем лучше клиенту. Для развозки пиццы покупают маленькие мотороллеры, а не крутые, вручную собранные харлеи. Потому что все это - инструменты, а не самоцель.
    Ответ написан
    3 комментария
  • Как объяснить рядовому клиенту, что сайт, сделанный руками, а не на шаблоне, для него будет лучшим выбором?

    Никак. Если шаблон покривает все потребности значит брать шаблон а не тратить время на разработку с 0.
    Ответ написан
    1 комментарий
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    @kgbplus
    Если вы смогли принести свой ноутбук из дома, воткнуть его в произвольную розетку и получить доступ к ресурсам сети и выйти в интернет, то можете не бояться такого "админа" - это не админ.
    Ответ написан
    4 комментария
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    Но можно ли при этом узнать что человек пишет, с кем общается?
    Он может перехватывать весь ваш трафик и читать его. Но если трафик https. то он зашифрован и ничего прочитать не получится. Можно конечно попытаться устроить перехват https но только при условии, что вы не следите за сертификатами.

    Но может ли он как-то палиться внутри сети?
    Смотря что вы подразумеваете под словом "палится" - если речь о перехвате трафика, то нет. Если речь о определении факта использования TOR - запросто.
    Ответ написан
  • Как запретить роутеру отвечать сканеру портов?

    @Zzzz9
    Закрыть порты
    Ответ написан
    Комментировать
  • Как понять, почему CentOS лагает без видимых причин?

    @phoenixtftf Автор вопроса
    Спасибо всем за помощь.
    Оказалось, на сервере завёлся руткит, запускавший биткоин-майнера на все 8 ядер.
    Как именно он попал на сервер, пока не знаю, как узнаю, буду огораживаться.
    Вот тут его обсуждают www.webhostingtalk.com/showthread.php?t=1512831
    А тут краткая инструкция по удалению www.ipserverone.info/uncategorized/server-abnormal...

    За ключевую подсказку спасибо ldv
    Ответ написан
    Комментировать
  • Как вставить изображение в шестиугольник?

    @quramolt
    Быстрый гуглинг даёт следующее решение StackOverflow - там можно что-то почерпнуть

    Вот пример - JSFiddle
    Ответ написан
    1 комментарий
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

    * Кэш должен очищаться по двум условиям (не по одному из, а именно по двум):
    - Время.
    - Протухание по бизнес логике.
    Разрешается по только времени в безвыходных ситуациях, но тогда время - короткий период.
    - При расчете ключей кэша должна использоваться переменная из конфигурации приложения (на случай обновлений кэш сбрасывается кодом, а не флашем кэш-сервера). В случае использования множества серверов - это очень удобный и гибкий инструмент при диплое.

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Какая разница между @include и include?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Собака не имеет никакого отношения к include. Это не один оператор, а два совершенно разных оператора.
    2. Увидев @ в коде ты можешь почти со стопроцентной уверенностью сказать, что его писал неграмотный пользователь, и пользоваться этим кодом не стоит.
    3. Увидев в коде @include ты можешь смело считать его автора абсолютным лохом и нубом, а сам код надо выкидывать немедленно. Потому что @include глушит не только саму ошибку включения файла, но и все ошибки в этом файле - то есть, поступает стократ хуже. Это значит, что если автор допускает такие косяки в коде, то и все остальное у него тоже ад кромешный.
    4. Самое главное. Ошибки надо не подавлять. Ошибки надо исправлять. Но опять же, делать это с умом. Начинающие программисты считают сообщения об ошибках своими личными врагами, и борются с ними всеми доступными средствами - с помощью @, error_reporting(0) и др. Получив линейкой по рукам и запомнив на всю жизнь, что так делать не надо, ониначинают с не меньшим рвением писать всякие проверки - лишь бы не допустить, не дай бог, ненавистного сообщения об ошибке. Например:

    if (file_exists($inc))
    {
        include $inc;
    } else {
        echo "Файл не найден";
    }

    Так вот, это - еще хуже. Для начала, часть ошибок этот код все равно не отловит. Но это даже не самое главное. Главное - что вот это вот "Файл не найден" не имеет ни малейшего смысла. Пользователю оно ничего не скажет. А программист о нем не узнает. А если и узнает, то ничего не поймет! Какой файл? Где не найден? По какой причине? Системное сообщение об ошибке содержит массу бесценной информации помогающей идентифицировать ошибку, сообщая нам где она произошла, какой файл не найден, по какой причине не найден. Выдавать вместо этого огрызок "файл не найден" - это мазохизм.

    И вот тут мы должны произвести натуральную революцию в неокрепшем детском мозгу: сообщение об ошибке не твой враг, а твой друг! И надо добиваться его появления всеми возможными способами! В том числе и выпиливанием бессмысленных проверок. Проверку можно ставить только если у нас есть сценарий обработки ошибки: к примеру, вместо этого файла мы можем заинклюдить какой-то другой, дефолтный. Тогда да - проверка имеет смысл. Но если это самый обычный инклюд, который всегда должен быть на своем месте, то его отсутствие обязано вызывать ошибку! Чтобы она была сразу показана на дев сервере и тут же исправлена. Чтобы она была записана в лог на продакшене и тут же исправлена.

    Ошибки не надо подавлять. Ошибки не надо прятать. Ошибки надо исправлять.
    Ответ написан
    3 комментария