Задать вопрос
  • Можно ли как-то скрывать код при помощи комментариев?

    riky
    @riky
    Laravel
    в шторме можно https://www.jetbrains.com/phpstorm/help/folding-cu...

    пример

    #region Description
    $users = [];
    // ... 
    #endregion


    и кстати для переключения между ними есть горячие клавиши
    https://www.jetbrains.com/phpstorm/help/navigating...
    Ответ написан
    Комментировать
  • Почему не скачивается мануал php?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Прямая ссылка: ca1.php.net/get/php_manual_ru.html.gz/from/this/mirror
    На указанной странице нет ссылки "скачать".

    Что же есть?
    Список ссылок на документации в различных форматах и на различных языках:
    JvGiMIe.png

    При нажатии на любую конкретную ссылку, попадаем на страницу со спсикам зеркал, с которых можно скачать документацию. При нажатии на любую из них начинается скачивание:
    0r76txY.png
    Ответ написан
    3 комментария
  • Javascript в браузере. Где найти документацию по работе js в браузерах?

    BohdanK
    @BohdanK
    Документацию смотреть у разработчиков браузеров, соответственно:

    IE: https://msdn.microsoft.com/en-us/library/ms537434(...
    https://msdn.microsoft.com/en-us/library/ms535862(...
    ну и дальше искать что нужно, с русским все плохо, переводы не корректные, если есть вообще.

    у Firefox более доходчиво: https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Chrome, Opera, Safari и большинство других работают под WebKit, соответственно ищите документацию для webkit https://developer.apple.com/library/mac/documentat...

    А то что вас интересует, поиск, удаление и т.д. фактически работает во всех современных браузерах одинаково, редко приходилось сталкиваться с тем, что что-то работает по разному, в основном это касается форм, к примеру range и т.д.
    Ответ написан
    Комментировать
  • Как сверстать такой фон у блока?

    @holfza
    Ответ написан
    Комментировать
  • Почему возникает ошибка incompatible types when assigning to type?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    table = fizz(table);

    Что сделать-то хотел?
    Если проинициализировать массив значением которое вернула fizz, нужно было просто проинициализировать его в этой функции.
    Если поменять область памяти на которую указывает table, то нужно было сделать table указателем.

    Почему при передаче table в fizz struct Item[100] преобразуется в struct Item *table, а при присваивании - нет?

    Потому что массив -- это синтаксис для статического выделения памяти на стеке, в области данных или в структурах. Имя массива -- это имя этого блока памяти, а его адрес -- адрес этого блока. Поэтому имя массива можно легко сконвертировать в адрес. Но если бы язык давал возможность менять адрес массива с помощью присваивания его имени, массив помимо своих элементов должен бы был содержать дополнительный указатель. Получился бы странный, сложный класс объектов, соединяющий в себе свойства массива и указателя. Поскольку язык С -- простой язык, у вас есть отдельно массивы и отдельно указатели, а сложный тип можно сделать самому.
    Ответ написан
    Комментировать
  • Шафл одной переменной, приводит к шафлу двух. Как исправить?

    Массивы передаются по ссылке.
    Когда вы пишите arr3 = arr2, вы не создаёте новый массив, который является копией первого, вы лишь присваиваете ссылку.
    Чтобы скопировать массив, можно например написать arr3 = arr2.slice();
    Ответ написан
    Комментировать
  • Эталонный javascript?

    mbeloshitsky
    @mbeloshitsky
    Вебдев, систем оперейшонс, ж.д. автоматика
    "Эталонный" код отличается от неэталонного тем, что в течение своей жизни, при исправлениях и внедрении каких-либо новых функций, претерпевает минимум изменений, и эти изменения локальны - то есть правится не по 1 строчке в 10 разных местах, а 5-10 строчек в одном месте.

    Поэтому вашим другом в поисках должна стать история изменений в системе контроля версий, соответственно, искать эталонный код надо в местах, где эта история есть, на github и bitbucket. Хорошими критериями для первоначального отбора будут популярность, длительное время жизни проекта, небольшой объем (чтобы разбираться легче было).

    То, что вы написали тоже, конечно, имеет значение, но так абстрактно не рассудишь. Вот мне, к примеру, не нравится когда html мешают c js. Но с другой стороны на подобном подходе построен react.js, в котором этим пожертвовали в угоду идее компонентно-ориентированного подхода. И, по слухам, получилось неплохо.
    Ответ написан
    Комментировать
  • Есть ли сервисы подсчета временных затрат на основе git (gitlab)?

    sim3x
    @sim3x
    Как можно оценить время на фичу из гита если у тебя есть только время пуша?
    Ответ написан
    6 комментариев
  • Как сделать инклуды хидера и футера в Photoshop?

    pozZzitiv
    @pozZzitiv Куратор тега Adobe Photoshop
    Дизайнер и перфекционист
    Уже задавали несколько раз этот вопрос здесь — используйте смарт объекты.
    Делается шапка/подвал/сайдбар и т.п. в отдельном psb и вставляется линком в макет (File/Place). Нужно поменять что-то в шапке - поменяли и в остальных файлах будет уже новый макет (только придётся обновлять вручную или использовать доп плагины). Можно создавать разные версии шапок/подвалов и в основном макете просто заменять содержимое смарт объекта.
    Ответ написан
    Комментировать
  • PHP. В чём магия?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что при удалении атрибута происходит перенумерация остальных. Пусть есть три атрибута, их номера будут 0, 1 и 2.
    Шаг 1. 
      $i = 0. 
      Удаляем атрибут 0.
      Атрибуты 1 и 2 получают номера 0 и 1.
    Шаг 2.
      $i = 1.
      Удаляем атрибут 1.
      Остался атрибут 0.

    Ну а PHP здесь совсем не виноват.
    foreach ($this->allowableTags as $tag) {
      foreach ($doc->getElementsByTagName($tag) as $element) {
        $attributes = $element->attributes;
        while ($attributes->length > 0) {
          $attr = $attributes->item(0);
          $this->clearElement($element, $attr);
        }
      }
    }
    Ответ написан
    Комментировать
  • Как установить временную зону javascript?

    Stalker_RED
    @Stalker_RED
    Вы не можете поменять таймзону в браузере. Предполагается, что вы будете использовать UTC даты, и только при выводе конвертировать их в местное время.

    Следующее выражение создаёт объект Date, используя всемирное время вместо местного:
    var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));

    © https://developer.mozilla.org/ru/docs/Web/JavaScri...

    upd есть такая чудесная штука как moment.js, которая решает большинство проблем с датами.
    Там и таймзоны есть: momentjs.com/timezone
    Ответ написан
    Комментировать
  • Как правильно менять тип переменной?

    Stalker_RED
    @Stalker_RED
    Да, так делают, и довольно часто. Конструкция !! для приведения к boolean вообще чуть ли не стандарт. В jQuery встречается, например.

    Вторая чуток пореже, и как правило, сперва ставят пустые кавычки, а потом уже переменную. Так:
    var num = 12345;
    var x = ("" + x)[3];
    console.log(typeof x, x); // string 4


    Третья еще реже, обычно просто ставится плюс перед переменной:
    var y = +x * 10;
    console.log(typeof x, typeof y, y); // string number 40


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

    И да, это делают не для оптимизации, а потому что
    Краткость - сестра
    Ответ написан
    Комментировать
  • Что означает 't' в запросе?

    petermzg
    @petermzg
    Самый лучший программист
    Это псевдоним таблицы.
    SELECT t.* FROM eps_gallery t WHERE t.type = 1 ORDER BY t.id DESC
    Ответ написан
    2 комментария
  • В чем различие между?

    petermzg
    @petermzg
    Самый лучший программист
    function Person(){} - Вы обьявляете функцию с именем Person.
    var person = Person() - Вы вызываете функцию Person и результат сохраняете в переменную person
    var person = new Person()- Вы создаете новый обьект использую функцию-конструктор Person
    Ответ написан
    Комментировать
  • Не оплатил домен, на следующий день его сразу купили - что за бред?

    Quber
    @Quber
    PHP Team lead
    Существуют специальные сервисы скупающие домены. Заходите на сервис, видите все высвобождающиеся домены по датам, ставите на него ставку если имя вам приглянулось. Сервис сам выкупает домен в течение нескольких секунд как это становится возможным. Скупают таким образом только киберсквоттеры. Ждите домен в продаже.
    Ответ написан
    Комментировать
  • Как поддерживать две версии приложения (платная и бесплатная)?

    onqu
    @onqu
    weasy
    Конечно, можно использовать 2 ветки, конечно, можно делать все в одной ветке и понатыкать везде #ifdef FOR_NISCHEBROD, FOR_REGULAR_CLIENT, FOR_RICH_ONE, конечно, можно расставить тэги, чтобы было проще искать эти места в будущем.

    Но, при увеличении объема логики придется прибегнуть к использованию шаманского бубна, ритуалу выстрела в свою ногу и мольбы праотцам. Добавлять/править логику в этих кусках будет очень непросто.

    Другой вариант.
    Делать приложение модульным, где основное приложение является лишь каркасом с базовой функциональностью, лежит в отдельной репе, тестируется отдельно от всего, и где модули это подключаемые расширения (Компоненты, DLC, LIB, Whatever), у которых есть API интерфейс для расширения функциональности основного приложения, и каждый лежит в своей репе.
    Более того, их можно будет тестировать, как вкупе, так и отдельно от основного приложения. При сборке указываем только требуемые расширения. Нэкст лэвэл - подключать расширения динамически, то есть без сборки с приложением.
    Ответ написан
    2 комментария
  • Как обновить composer через консоль OpenServer?

    DJZT
    @DJZT
    Laravel - code for you
    composer.phar это файл скрипта. Его надо запускать php интерпретатором.
    php composer.phar
    Если хотите работать с обычной командой composer, то скачайте с сайта установочную версию. Она работает чуть чуть быстрее. Чем портативная.
    Ответ написан
    Комментировать
  • Как позиционировать свои услуги: мы или я?

    sim3x
    @sim3x
    Развиваешь "бренд" %company_name% - мы
    развиваешь бренд имени себя - я
    Ответ написан
    Комментировать
  • Объясните код из Java?

    @zelan
    Кратко обо мне не получится.
    Если в классе A не объявлен ни один конструктор, то он по умолчанию содержит конструктор без параметров - A(), однако, если объявлен хотя бы один конструктор с параметрами, то конструктор A() исчезает. Но исчезает он только тогда, когда явно не объявлен.

    Примеры
    //содержит неявно 1 конструктор A()
    class A{
    }
    
    //тоже содержит  конструктор A() но явно
    class A{
        A(){
        }
    }
    
    //cодержит СОДЕРЖИТ ТОЛЬКО 1 конструктор, конструктора A() уже нет
    class A{
        A(int x){
        }
    }
    
    //есть оба конструктора
    class A{
        A(int x){
        }
    
        A(){}
    }


    В примере класс A содержит один конструктор с параметром - A(int x), это значит, что он не имеет конструктора A(), и его нужно (при необходимости) определить самому.

    Механизм наследования таков:
    - мы хотим создать объект B, вызвав конструктор B(int b)
    - первой строкой конструктора должна быть строка super(...) - с параметрами или без, это нужно для того чтобы сначала сконструировался родитель, ведь B унаследован от A
    - если первая строка другая, то компилятор подставляет конструктор родителя без параметров - super(), в этом случае будет вызвано создание объекта A с помощью конструктора A().
    - но так как в объекте A не определен этот конструктор - вылетает ошибка

    Можно исправить так
    Либо добавить в объект A конструктор A(), либо в конструктор объекта B, добавить явный вызов конструктор родителя super(int x) ( в данном случае у родителя есть только 1 конструктор - A(int x)
    Ответ написан
    1 комментарий
  • 3 else или 2 if?

    kompi
    @kompi
    nullstack devoops
    Чтобы избежать мучений: завернуть, например, получение группы в функцию или метод, а потом более лаконично перебрать через switch:
    function getUserGroup() {
    //..
    }
    switch(getUserGroup()) {
      case 'admin': 
        break;
      case 'user': 
        break;
      case 'guest':
      default: 
        break;
    }
    Ответ написан
    Комментировать