• Можно-ли брать доп. плату за несоблюдение дэдлайна?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Абсурд! На каком основании?
    e05e831eab5d4bffa5d569cc495af8b7.jpg
    Ответ написан
    2 комментария
  • Как по-умному сделать мульти-JOIN + CASE-statement?

    @Draconian
    Oracle Developer
    На чистом SQL такой селект написать не получится, насколько я могу судить, нужно строить запрос в php скрипте, в зависимости от нужных инфоблоков добавлять в селект нужные таблицы.

    Если вам не нравится, как битрикс хранит данные ваших инфоблоков, напишите свой компонент, который это будет делать так, как вам нравится. Тогда не надо будет посылать незнакомых людей "заняться бенчмаркингом".
    Ответ написан
    1 комментарий
  • Не устарела ли литература?

    rishatss
    @rishatss
    Simple Developer ^)
    ИМХО мое говорит все что я читаю, я забываю быстро или помню так абстрактно :) Когда беру и реально это практикую на реальных вещах. Куда быстрей оседает инфа. Лучше попробуй что-то полепить :)
    Ответ написан
    1 комментарий
  • Почему в PSR пишут, что НЕОБХОДИМО 4 пробела?

    DevMan
    @DevMan
    4 пробела - это 4 пробела всегда.
    а таб - может быть сколько угодно пробелов, поскольку величина настраиваемая, из-за чего при несовпадении ширины таба у людей код "разежается".

    в реальности каждый танцует как хочет.
    Ответ написан
    3 комментария
  • Почему в PSR пишут, что НЕОБХОДИМО 4 пробела?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В psr пишут - обязательно 4 пробела, обязательно открывающие фигурные скобки с новой строки и прочие вещи, к которым привыкли те, кто писали эти стандарты, где можно прочитать - из чего они сделали эти выводы, или это их личные привычки, которые выставляются за необходимость
    Все PSR - это их личные привычки.
    Никакого обоснования в данном случае быть не может - Вам могли предоставить совершенно произвольный coding standart принятый в данной компании, PSR это вполне нормальный вариант.
    Ответ написан
    Комментировать
  • Почему в PSR пишут, что НЕОБХОДИМО 4 пробела?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    4 потому что размер таба "стандартный".
    Пробела потому что с пробелами будет выглядеть везде одинаково(браузер, блокнот, всё что угодно), в отличие от табов.

    разобраться в которой без 4 пробелов невозможно, типа callback-hell в js?

    Причем здесь PSR(php) и JS только непонятно...
    У JS свои рекомендации, точнее даже у каждой компании свои JS правила.
    Ответ написан
    3 комментария
  • Почему не работает shell-команда Debian?

    sim3x
    @sim3x
    Сайт фильтрует пользователей и пауков
    Сайт использует куки и авторизацию
    Ответ написан
    4 комментария
  • Как задать для wget -O параметр с динамическим именем страницы?

    @abcd0x00
    make_name()
    {
        echo "file_$(date '+%Y-%m')_$1.txt"
    }
    
    for i in 1 2 3; do
        wget -O "$(make_name $i)" "https://www.yandex.ru"
    done


    Результат
    [guest@localhost tmp]$ ls *.txt
    file_2017-02_1.txt  file_2017-02_2.txt  file_2017-02_3.txt
    [guest@localhost tmp]$
    Ответ написан
    Комментировать
  • Как добиться быстрой индексации страниц сайта?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    1. имей sitemap, скорми его поисковикам
    2. Добавляй вручную в панелях вебмастера у яндекса и гугла, так же поможет "уникальный текст" в панеле яндекса.
    3. Счетчики яндекса и гугла с разрешением на индексацию.
    4. ссылки с авторитетных ресурсов. Можно покупать ссылки с морд новостных сайтов. Дорого, но если вопрос стартануть быстро акцию - вариант.
    5. adwords и яндексДайрект - шустренько индексируют, если денюжкой пахнет
    Но не забывайте, что индексация и апдейт поисковой выдачи - это разные вещи
    Ответ написан
    1 комментарий
  • По какому принципу работает CSRF Token защита и чем она отличается от Api Token?

    tkutru
    @tkutru
    A programming cat.
    Во-первых, наверное все-таки CSRF Token.
    Во-вторых, CSRF токен никуда руками вводить не надо, его обычно прицепляют в качестве доп. скрытого поля при отправке форм. Смысл в том, чтобы злоумышленник не мог дать ссыль или сделать на своем сайте форму, переход по которой заставил бы залогиненного на атакуемом ресурсе пользователя сделать какие-то неявные действия (сменить пароль, емаил, написать сообщения, перевести средства и т.п.).
    Ответ написан
  • Как работают WebSockets?

    bingo347
    @bingo347
    Crazy on performance...
    WebSocket - постоянное соединение поверх http(s)
    При установлении соединения происходит рукопожатие с помощью специальных http заголовков, после любая сторона в любой момент времени (пока соединение не прервется) может писать в тело запроса сообщения. Каждое такое сообщение представляет из себя передаваемые данные + мета-данные

    1. Можно найти сходство с tcp, только вместо пакета у нас сообщение. Так как ws работают поверх http, который в свою очередь работает поверх tcp, то формально одно сообщение может быть разбито на несколько tcp пакетов, а в одном пакете может содержаться несколько сообщений, однако единицей данных для ws является именно сообщение
    2. ws - это постоянное соединение, которое будет висеть пока любая из сторон не закроет его либо пока не оборвется связь. Так как сокет формально может простаивать (когда нет обмена данными), то tcp соединение для него нужно открывать с опцией keep-alive, а так же желательно отправлять http заголовки для keep-alive в рукопожатии.
    3. Любая сторона может в любой момент времени может отправить любое количество сообщений. Получающая сторона получит данные, когда до нее дойдут все tcp пакеты самого раннего из сообщений (это гарантирует, что сообщения придут в том же порядке, в котором они были отправлены)
    Ответ написан
    6 комментариев
  • Как удалить контент из начала файла, при работате с fopen()?

    Чтобы "отгрызть" кусок файла с конца, не создавая при этом новый, можно воспользоваться функцией ftruncate - откинуть лишнюю часть файла.
    "Отгрызть" сначала, не создавая новый файл, не получится. Нужно только обрабатывать кусками.

    1. чтобы не "повесить" систему, надо всегда обрабатывать файлы через "окно", т.е. фиксированными блоками (бинарные данные или текстовые с о-о-очень длинными "строками") или построчно (для коротких строк), считывая через fgets (пример) - резервируется кусок памяти под размер конкретной строки.
    2. альтернативно, можно "отгрызать" при помощи потоковых обработчиков типа sed, gawk (GNU) - регулярками или другими специальными средствами. Есть также logrotate, но это другое, для файлов журналов.
    Ответ написан
    8 комментариев
  • Как удалить контент из начала файла, при работате с fopen()?

    @melnikov_m
    Нет, рассчитывать, что файлы будут маленькие - это плохое решение. Большие файлы нужно обрабатывать с помощью генераторов (если конечно версия php позволяет )
    Ответ написан
    Комментировать
  • Что удобнее, тем, кто уже пробовал - Передавать ошибку return или сразу бросать Exception прямо из функции/foreach?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Через return можно возвращать код ошибки и собирать ошибки этажом выше а потом что то делать в зависимости от того какие ошибки были получены. В тестировании например может иметь место такой подход. Потому что эксепшн сразу прервет выполнение теста. А это может быть не желательно в конкретном случае. Зависит как уже сказали от архитектуры.

    Вот ещё, недавно наткнулся:
    https://habrahabr.ru/company/mailru/blog/322804/ - Выбор правильной стратегии обработки ошибок (части 3 и 4)
    Ответ написан
    6 комментариев
  • Что удобнее, тем, кто уже пробовал - Передавать ошибку return или сразу бросать Exception прямо из функции/foreach?

    BacCM
    @BacCM
    C++ почти с рождения
    Как уже писали зависит от архитектуры.
    Но самое главное чтобы было однообразие подхода и не было мешанины

    Чисто субъективно мне больше по душе возвраты ошибок через return. И причин тому несколько.
    Не все компиляторы легко переваривают исключения, да в 2017 году! Например для встраиваемых систем для DSP вообще много где рекомендуется чистый C. И включение поддержки исключений и rtti не рекомендовано.
    Ответ написан
    7 комментариев
  • Как на битриксе сделать фильтр по свойству с подчеркиванием?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Самый простой вариант использовать цифровой ID свойства. PROPERTY_9_VALUE.
    Не очень красиво но должно работать. Чтобы не пришлось в случае чего по всему сайту заменять ID свойства на другое значение можно использовать константы.
    Ответ написан
    2 комментария
  • Как правильно составить диаграмму классов?

    @red-barbarian
    Вообще, это правильный подход к диаграммам. )
    Вот что писал Боб Мартин:
    "Возьмите за правило выбрасывать ненужные UML-диаграммы. А еще
    лучше, не создавайте их на постоянном носителе. Рисуйте на доске или
    на клочках бумаги. Почаще стирайте с доски и выбрасывайте эти об-
    рывки. Не привыкайте к инструментарию CASE или к графическим ре-
    дакторам. Для таких инструментов есть свое время и место, но жизнь
    большинства UML-диаграмм недолговечна."
    Хотя, далее, некоторые полезно и сохранять. Общий дизайн системы (идея) или те моменты которые из текста программы будет сложно понять.

    Упрощенно можно так подходить к выделению классов и интерфейсов.
    Есть два реальных объекта. Они относятся к разным классам. Со своими особенностями. Но у них есть некие одинаковые свойства. Например шаблоны функций. пример в общем случае быстрая сортировка это шаблон реализующий алгоритм, но этот шаблон не знает как реально сравнивать объекты. То есть это абстрактный класс объединяющий конкретные быстрые сортировки конкретных объектов. Можно сказать, что абстрактный класс это вынос общих методов и полей их своих потомков. При том что реально мы никогда не создадим экземпляр этого класса.
    Выделение интерфейса. Обычно применяется для разделения систем на отдельные на зависимые части. Например кнопка включает лампу. В программе это реализуется так
    кнопка имеет поле лампа. т.е. реализация кнопки зависит от лампы. Если тип (или код) лампы поменялся, то и часть кода ответственная за кнопку тоже меняется. По крайней мере должна протестироваться. Но можно договориться разделить все устройства которые могут что-то включать (кнопки) и могут быть включены (лампы, двигатели, телевизоры...) и указать как им взаимодействовать.
    Т.е. примерно так:
    Кнопка управляет устройствами.
    Устройство должно иметь метод "включить".
    Лампы, телевизоры, двигатели должны реализовать это метод у себя.
    Итого одна и та же кнопка (без изменения кода) управляет целой группой разнородный устройств (но реализующих общие правила взаимодействия)

    По картинкам:
    у нас есть объекты
    связь 0, связь 1, ...связь 3
    так же объект шина из связей.
    общее для них это они все имеют имя.
    также они имеют некоторые правила передачи сигналов.
    Это дает нам два класса Net и Bus. Кроме того Bus включает в себя много Net.
    Далее хотелось бы , что бы эти классы были независимы от правил. т.е что бы правила мы могли назначать сами. возможно динамически. Поэтому net и bus имеют метод назначающий правила rule (с общим интерфейсом) (которые можно менять, и не менять реализацию net, bus ).
    Итого Выделили общие свойства из net, bus в абстрактный класс AbstractNet. bus включает много net. Вынесли правила (которые будут часто меняться и которые мы возможно еще не знаем) за общий интерфейс.
    примерно так. упрощенно.
    Ответ написан
    6 комментариев
  • Почему PHP код с замыканием не работает?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    $obj = new StdClass();
      $obj->fn = new StdClass();
      $obj->fn->move = function ($a, $b) {
        print_r($this);
        return $a * $b;
      };
      
      var_dump($obj->fn->move);
      
      $move = $obj->fn->move;
      
      $move(1,2);


    move не метод класса, а переменная, поэтому фатал.

    stackoverflow.com/questions/9355377/declaring-an-a...
    stackoverflow.com/questions/4535330/calling-closur...
    Ответ написан
    1 комментарий
  • Почему PHP код с замыканием не работает?

    riky
    @riky
    Laravel
    StdClass нельзя добавлять методы.
    когда вижу подобный код, меня прям трясет.
    это вам не js, здесь вы можете создавать нормальные человеческие именованные классы.

    UPD: только лишь в спортивных целях покажу как может работать
    $f = $obj->fn->move;
      print_r($f(1,2));

    то есть функция все таки сохраняется. но новый метод у класса не добавляется.
    Ответ написан
    34 комментария
  • Правильно ли я понимаю паттерн модели из MVC?

    Decadal
    @Decadal
    Зачем вы включаете базу данных в понимание модели? База данных это то, куда сохраняются данные. А модель - это то, как выглядят (или что представляют из себя) эти данные.
    В Yii2, например, есть класс Model, который может быть вообще не связан с БД, он содержит набор полей, набор правил валидаций, и... всё-таки остаётся моделью! Очень хорошо будет вам попробовать реализацию MVC на конкретном примере, в конкретном фреймворке и увидеть, что для чего там используется, чтобы не путаться (или пускай даже путаться, но не стопориться в разработке и развитии).
    Ответ написан