Задать вопрос
  • С чего начать изучение php?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    7 комментариев
  • Спецам Javascript. Что тут можно оптимизировать?

    А Вы знали что костяшки нельзя рандомно разбрасывать по полю пятнашек? ;) Для того чтобы они всегда складывались необходим специальный алгоритм размешивания суть которого должна сводиться к (перестановка двух случайних косточек) * 2n?

    Источник

    Поэтому сначала оптимизируйте генерацию случайной доски.

    У Имя Фамилия в алгоритме, кстати, та же ошибка..
    Ответ написан
    2 комментария
  • Спецам Javascript. Что тут можно оптимизировать?

    aen
    @aen
    Keep calm and 'use strict';
    Для начала не засерайте глобальную область видимости.
    Ответ написан
    3 комментария
  • В каких случаях лучше использовать lockfree структуры данных, а когда на мютексах?

    AxisPod
    @AxisPod
    На деле всё очень сложно и часто без 2х реализаций сказать очень сложно. На жесткой гонке lock-free могут очень плохо себя показать, т.к. будут постоянно болтаться во внутренних циклах, пытаться записать данные, при этом другие потоки будут влезать и мешаться. Опять же всё зависит от того как использовать. Например вряд ли будет выгодным вытаскивание из одной очереди 5-10 элементов на одно действие, т.к. будет в лучшем случае 10-20 lock-free операций со сбросом кэша, тут выгоднее даже будет spinlock mutex.
    Ответ написан
    Комментировать
  • Почему не выводится цикл в twig?

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    {% for post in posts %}
    {{ post.name %}
    {{ post.img }}
    {% endfor %}
    Ответ написан
    Комментировать
  • Что мне использовать: mysql или mysqli?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    НИ ТО НИ ДРУГОЕ

    Впечатления: это ад, посаны!

    Истину глаголешь.
    Потому что mysqli не предназначена для использования в коде напрямую. А только через более высокоуровневый враппер. Сама по себе это низкоуровневая либа, которая обеспечивает доступ ко всем самым мелким настройкам драйвера. Именно поэтому она так многословна и неудобна. И именно поэтому надо на её основе обязательно лепить враппер.

    С другой стороны, старая mysql - ТОЖЕ низкоуровневая либа, и тоже НЕ ДОЛЖНА использоваться в коде напрямую, а только как основа для враппера. К тому же она официально устарела.

    В общем, у тебя два варианта:
    • Либо использовать PDO, который является более высокоуровневой либой-недовраппером. Как пользоваться, написано здесь: Как работать с PDO?
    • Либо, если хочешь все-таки базироваться на mysqli - использовать готовый враппер SafeMySQL, с которым все ужасы уйдут в прошлое, а код сократится в 10 раз
    А САМЫЙ лучший вариант - это перестать гонять запросы из кода напрямую, а вместо этого освоить уже какой-нибудь фреймворк и использовать для работы с базой ORM
    Ответ написан
    2 комментария
  • Примеры классов в программировании?

    aush
    @aush
    The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures."

    Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.

    On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened.

    Anton van Straaten

    Без классов прекрасно можно обойтись. Более того, на примере разработки на объектно-ориентированном C# можно заметить, что если четко следовать принципам Single responsibility и Open/closed из SOLID, то код начинает сильно напоминать функциональный.

    Тут нет такого, как лучше/хуже. Есть разные задачи, разные подходы и разные инструменты.

    Можно сказать, что главная задача, которую решают классы - инкапсуляция. Допустим, два человека работают с одним проектом и оба создают для своей задачи какую-то глобальную переменную и работают с ней в своих функциях. В итоге, ни один из них не может быть уверен в том, какое значение имеет эта переменная в заданный момент времени. Если же каждый из них следует принципу инкапсуляции, то такой проблемы обычно не возникает.
    Ответ написан
    4 комментария
  • Какие минусы у Module?

    1. Первая конструкция хуже второй - в ней, вместе с прототипом, переопределяется свойство constructor, на которое, обычно, наплевать, но иногда оно может помочь определить конструктор инстанса.
    2. _private ни капли не приват без var.
    3. Это IIFE, а не конструктор - вызывается без new, одноразовая фабрика. Минусы - по сравнению с чем?

    UPD: Я так понимаю, вам хочется приватных данных и функций у инстансов. Верните конструктор из замыкания. Примерно так:
    var Test = function(){
      function Test(privateData, publicData){
        this.publicData = publicData;
        this.instanceFn = function(){
          console.log('Публичный метод инстанса');
          privateFn(privateData);
        }
      }
      Test.prototype.protoFn = function(data){
        console.log('Публичный метод прототипа');
        privateFn(this.publicData);
      }
      function privateFn(data){
        console.log('Приватная функция:', data);
      }
      return Test;
    }()
    
    var test = new Test('Приватные данные', 'Публичные данные');
    console.log(test.publicData); // => Публичные данные
    test.instanceFn(); // => Публичный метод инстанса, Приватная функция: Приватные данные
    test.protoFn(); // => Публичный метод прототипа, Приватная функция: Публичные данные

    Минус - методы инстанса, работающие с приватными данными, создаются каждый раз при вызове конструктора. В ES5 иначе никак, разве что публичные "приватные" свойства, что якобы не замечаем. В ES6 с приватными данными полегче - есть Symbol и WeakMap.
    Ответ написан
    5 комментариев
  • Как дальше совершенствовать свои навыки программирования?

    aen
    @aen
    Keep calm and 'use strict';
    SOLID, GRASP, GoF - на первое время будет достаточно и этих аббревиатур
    Ответ написан
    Комментировать
  • Javascript: организация прокси сервера на клиенте?

    Keksinautin
    @Keksinautin
    Software Engineer
    А зачем один файл разбивать на куски и хранить на разных серверах?
    Или Вы хотите, чтобы видео проигрывалось сначала с одного сервера, потом со второго, а затем с третьего?
    Тогда Вы можете просто показывать видео с одного адреса, а когда оно закончится переключаться на другое, затем на третье. Просто меняя атрибут src у видео-тега.
    Ответ написан
  • Как найти позицию DOM-элемента относительно абсолютного нуля высоты окна?

    @Zewkin
    Я у мамы фронтэндер
    var offsettop = $(this).offset().top;
    var offsetleft = $(this).offset().left;
    Ответ написан
    1 комментарий
  • Новичок в php, неправильно отображается код, что делать?

    zooks
    @zooks
    Frontend
    Поменять видеоуроки на те, в которых не умалчивается, что для запуска PHP в браузере должен быть установлен веб-сервер и сам PHP.
    Ответ написан
    Комментировать
  • С чего начать web разработчику ?

    samoilenkoevgeniy
    @samoilenkoevgeniy
    Lead Full-Stack Web Developer
    На самом деле вы плохо смотрели. Этот вопрос на тостере задает каждый второй человек, который хочет, чтобы за него все решили.
    Ответ написан
    1 комментарий
  • С чего начать web разработчику ?

    @kirill-93
    Когда я решил попробовать себя в этой сфере, я накидал себе план обучения. Что то типа html > css > js > php. Ну разумеется для начала общие сведения обо всем этом. Так как вообще не понимал что и для чего. Потом много смотрел видео уроков и сам тренеровался. Научился делать (как мне тогда казалось) интернет магазин и пошел устраиваться на работу. Взяли стажером и оказалось что я очень мало знаю. Мало из того что я учил мне пригодилось. На практике все оказалось немного иначе. Я проработал там пол года, затем ушел в другую компанию (более крупную) с мыслью "ну теперь то я кое что могу). И придя на новое место снова оказалось что я совсем новичок. так как инструменты которые тут использовались были другими. Я менял еще несколько мест, каждый раз находя более профессиональный коллектив. И каждый раз узнавал много нового. Я к тому что самый лучший способ научиться делать хорошо - работать с теми, кто лучше вас. Это конечно может быть сложно, но это будет в десятки раз продуктивнее, чем развиваться самому.
    Ответ написан
    3 комментария
  • Почасовая работа: уволить фрилансера или оставить и провести разъяснительные беседы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А с чего вы взяли, что вам лучше знать, как ему продуктивнее работать? У меня есть кодер, который колбасит свою работу и параллельно смотрит сериалы в оригинале на английском - учит язык. У него в углу экрана поверх всего маленькое окошко с видео. На скорость и качество его работы вообще никак не влияет. Ему так комфортно. С чего я должен ему что-то запрещать? Кто-то параллельно с работой будет слушать музыку. Кто-то на планшете какую-то игрулю будет проверять каждые 30 минут - вы этого всего не отследите, да и зачем? Не надо драконить людей, вы что, рабовладелец?

    UPD: По большому счету, вот эти ваши придирки и разборки как раз и снижают продуктивность. Вы сами себе вредите. Как правильно коллеги пишут - гнать в шею такого заказчика :)
    Ответ написан
    5 комментариев
  • Как сделать дамп MySQL базы?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    гуглите утилиту mysqldump и как ей пользоваться. Она консольная если что.
    Ответ написан
    2 комментария
  • Как лучше оформить HTML код в javascript?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Где вы были последние 4 года?) Шаблонизаторы. moustache, _.template, Jade, тысячи их.
    Сами шаблоны либо предварительно компилять, либо отдавать прямо в составе изначальной страницы в тэгах
    Ответ написан
    1 комментарий
  • Какой фреймворк предоставляет такую хитрую сетку?

    Кнопки в Вашем примере не зависят от сетки. Они имеют фиксированную ширину, и стиль inline-block, складываются в родительский p с стилем text-align: center;, если не помещаются, перескакивают на нижний ряд. Это _НЕ_ сетка, это обычное поведение inline-block элементов в родителе с diaply:block и text-align: center.
    Ответ написан
    3 комментария
  • Как разобраться в философии symfony2?

    @shoomyst
    dumb
    Symfony это конструктор, который поставляется в собранном виде. Но ничто не мешает вам его разобрать и собрать по-своему. Многие критикуют фреймворк за это качество: нет ощущения целостности как у Yii или Laravel. Похожее говорили в свое время про Zend1: монстр, куча несвязанных компонент, лучше я буду кодить в своем уютном CodeIgniter-e.

    Symfony Framework - это (грубо) HttpKernel + DependencyInjection Container (DIC) + EventDispatcher.

    Главное задачей HttpKernel является конвертирование Request в Response. Для этого он загружает и инициализируется бандлы, создает контейнер (DIC), пытается по Request определить контроллер, выполнить его и убедиться, что результат выполенения контроллера является объектом Response, если нет, то пытается преобразовать результат в Response.

    DIC занимается созданием и хранением сервисов, если совсем грубо, то это такой навороченный Registry.

    Ну а EventDispatcher запускает события, на которые могут подписываться любые части фреймворка и приложения. Вы можете подписаться на любые события внутри Symfony и влиять на ход выполенения вашего приложения.

    Бандлы лучше всего сравнить с плагинами. Есть ядро, которое было описано выше, а бандлы это плагины для него, добавляющие некий функционал (FrameworkBundle, TwigBundle, MonologBundle). FrameworkBundle это основной плагин, который добавляет основной функционал: формы, валидация, сессии, translations. При желании его тоже можно заменить как и любой другой. Другой задачей бандлов является интеграция различных библиотек в ваш проект: twig, monolog, swiftmailer (поставляются с симфони), sphinx, elastic и т.д. Ну и логика приложения так же может быть размещена в бандлах.

    Чтобы Symfony узнал про ваш бандл, его необходимо зарегистрировать в AppKernel.

    У каждого бандла есть своя конфигурация, с помощью которой он может интегрироваться в Symfony:
    1. Регистрация своих сервисов в DIC. Далее вы можете использовать их, например, в контроллере: $container->get('sphinx.search')->query(...)
    2. Бандл может повесить свои сервисы на какие-то события. Например, на событие KernelEvents::CONTROLLER, тогда ваш бандл получит управление при подборе контроллера и вы сможете обойти штатный механизм подбора и вернуть свой, который и будет выполнен.
    3. Использование тегов. Например, вы создали класс HelloWorldViewHelper и хотите его подключить в Templating. В конфигурации указываете для него тег "templating.helper" и он будет подхвачен Symfony и встроен в шаблонизатор.
    Ответ написан
    6 комментариев