• Где в Москве можно получить практические навыки технической организации работы отдела разработки (приоритет на PHP)?

    flr
    @flr
    Где получить практические навыки ...?

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

    День открытых дверей вряд ли чем-то поможет. Вы же не посмотреть на сидящих за компьютерами людей хотите?

    В целом, могу поделиться нашим опытом (в каком-нибудь скайпе). Мы для себя по всем пунктам вопросы давно закрыли. В последнее время подумывал о том, чтобы написать статью по всем этим и подобным вопросам.
    Ответ написан
    Комментировать
  • Как вернуть состояние объекта?

    Denormalization
    @Denormalization
    $obj = new Example();
    $obj->variable = "Переменная";
    
    $anotherobj = new AnotherObj;
    $anotherobj->method($obj);


    Так, не?
    Ответ написан
    4 комментария
  • CURL, заголовки. Не пойму, в чём проблема?

    mahoho
    @mahoho
    Full stack certified PHP developer.
    Читайте документацию и будет вам счастье:
    curl_setopt($ch, CURLOPT_REFERER, 'http://site.com/main-page');
    Ответ написан
    Комментировать
  • Игровой ноутбук и ноутбук для тяжелых программ, это разные ноутбуки?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Да это разные ноутбуки. Основные отличия в следующем:

    1. Игровой, обязательно есть мощная видеокарта + навороченная система охлаждения + хороший большой экран. При этом очень низкое время автономной работы, гигантский вес, в общем автономность стремится к 0. Удобство использования таким ноутбуком обычно не принимается в расчет, ведь вы всегда можете подключить свою внешнюю клавиатуру и мышь. Яркий пример ASUS G751JT. При этом, вам конечно никто не помешает и поработать на таком, но увы только рядом с розеткой.

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

    От себя хотел бы добавить следующее, если покупка хорошего игрового ноутбука - вопрос сомнительный, и это скорее каприз для игроманов с очень высоким доходом. То покупка хорошего рабочего ноутбука - это очень важно. Такой ноутбук может стать вашим рабочим инструментом на многие годы. И во многих случаях имеет смысл даже взять такой в кредит, он обязательно окупит себя за несколько месяцев.
    Ответ написан
  • Какой самый удобный способ парсинга https://api.vkontakte.ru/ на php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Зачем его парсить, если это API, которое уже отдаёт данные в удобном формате? Вы не умеете пользоваться json_decode()?
    Ответ написан
    1 комментарий
  • Блок питания MacBook лежит между двумя матрасами и греется, вредно и опасно ли это?

    Foolleren
    @Foolleren
    Компас есть, копать не люблю...
    1)УЗО не защищает от пожара, только от тока утекающего на землю.
    2) каждый лишний градус сокращает срок службы компонентов зарядки прежде всего конденсаторов, на сколько? а фиг его знает, конечно можно посмотреть на датащиты конкретной партии конденсаторов в зарядке, обычно там пишут что-то в районе 2000 часов при 105 градусах для хороших попадается цифра 10к часов.
    Ответ написан
    Комментировать
  • Это и есть полиморфизм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет.

    Полиморфизм, как следует из названия, это когда что-то маскируется под что-то другое. Это свойство системы типов языка на котором вы пишите, он может позволять вам делать вещи, маскирующие свой внешний вид ("названия") но все же это не та же вещь. Ну и стоит заметить что у полиморфизма есть еще разные виды. Например:

    Параметрический полиморфизм. Это когда мы можем написать один код, с одним набором имен, которые работает с разными типами аргументов. Пример - шаблоны из C++ или дженерики в Java. То есть "имена" методов одинаковые, потому что они в одном экземпляре. Реализация одна, одно поведение. А вот аргументы могут отличаться.

    Ключевое отличие от ad-hoc полиморфизма, про который будет ниже в том, что наша реализация понятия не имеет что придет на вход. Может придти что угодно и с этим нужно будет работать, однако работать с любым типом мы будем абсолютно одинаково.

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

    Многие путают полиморфизм подтипов с наследованием, подменяя эти понятия. Без наследования мы конечно же не сможем достичь иерархии типов, но это больше механизм а не принцип.

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

    Ad-hoc полиморфизм - это пожалуй самый интересный вид полиморфизма с которым можно долго холиварить. По сути при этом виде полиморфизма, у нас одинаковые имена, а поведение зависит от входящих аргументов. Пример - перегрузка методов в C++. Интересен этот вид полиморфизма в основном тем, что он не является "настоящим".

    При динамической системе типов не требуется никаких дополнительных возможностей вроде той же перегрузки методов для достижения ad-hoc полиморфизма. Тупо кидаем что хотим в функцию, а там уже if-ами рагребаем или же приводим к какому-то одному варианту. Отдельные конструкции нужны в языках со статической системой типов. То есть нам нужно еще на этапе компиляции кода знать какие именно типы могут приходить в наши методы, и в зависимости от оных вызывать тот или иной код.

    Среди PHP-разработчиков немало тех, кто мечтает увидеть в этом языке с динамической системой типов честную перегрузку методов как например в Java или C++. Просто так, потому что if-ы это плохо и лучше уж пусть они будут неявные на уровне компилятора/рантайма.

    Полиморфизм с приведением типов - еще один вид "не настоящего" полиморфизма. Мы "эмулируем" полиморфизм за счет того, что на уровне рантайма языка происходят касты действительного в желаемое. Например в PHP мы можем выставить у функции тайпхинтинг string, и можем внутри иметь одно и то же поведение для всех входящих аргументов. Передать же в качестве аргумента мы можем все что можно скастить в строку.

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

    Keanor
    @Keanor
    Ведущий разработчик
    нормально. только
    1) если аргумент array то пусть она по дефолту будет пустым массивом а не null
    2) проверки на !empty в вашем случае бесполезны, проще сразу $this->template = $template, или через сеттеры
    Ответ написан
    Комментировать
  • Сайт и почта через CNAME одновременно?

    alsopub
    @alsopub
    Ничего не понял.

    CNAME - это имя хоста, отвечающего за поддомен
    Почта - это MX запись, куда вы занесете то что вам выдаст сервис.
    Или что именно у вас не получается?

    Например вы разместили сайт на ГуглСайты, а почту, например на mailservice.com.
    Вы в своем dns прописали примерно следующее:
    www CNAME ghs.google.com
    @ MX mx.mailservice.com (то что выдаст сервис)
    @ TXT v=spf1 redirect=_spf.mailservice.com

    и у вас будет сайт www.domain.ru и почта вида addr@domain.ru

    Бонусом еще редирект domain.ru -> www.domain.ru, если у вас к хостингу привязан только www.domain.ru - Редирект с domain.ru на www.domain.ru без веб-сервера, сервис?
    Ответ написан
    3 комментария
  • Как использовать BitTorrent Sync?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Где эти данные вообще будут храниться?

    На тех компьютерах, которые были подключены к шаре.

    Есть ли открытые пиры? Ну например у меня только один ПК, а данные необходимо забэкапить, как быть в таком случае?

    Найти второй компьютер или сервер, куда будут синхронизироваться эти файлы.

    BtSync - это не "облачная чёрная дыра", в которой бекапятся данные со всего мира на чьих-то компьютерах. Это инструмент синхронизации файлов между доверенными (настроенными) компьютерами. Данные размещены на них физически. Пока они на них размещены - они дублируются. При выходе из строя одного компа, на втором данные останутся.

    стоит ли переходить на версию Pro

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

    Upd: Могу ошибаться, и лимит на 10 шар у Free Edition больше не актуален.
    Различия между Free и Pro описаны здесь, внизу страницы:
    https://www.getsync.com/features
    И здесь:
    help.getsync.com/hc/en-us/articles/204754419-Sync-...

    Если вам нужны какие-либо из Pro-фич, то вам нужен Pro.
    Ответ написан
    1 комментарий
  • Не получается отвязаться от консоли (создаю php-демон), почему?

    @Nc_Soft
    <?php
     
    // создаем дочерний процесс
    $child_pid = pcntl_fork();
     
    if ($child_pid) {
        // выходим из родительского, привязанного к консоли, процесса
        exit;
    }
    .....
    Ответ написан
    1 комментарий
  • Где можно найти работу для повышения навыков?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Удаленно редко кто хочет нанять человека, который учится. Устраивайтесь (по вечерам, на полдня, как попало) в офис аутсорс компании (человек на 50+) на пол/четверь ставки или "за спасибо" джуниором/интерном/практикантом/кем-попало. За полгода/год - подровняете скиллы и технические и проектные (не менее, а то и более важные в нашей индустрии). Это хорошая и быстрая школа.

    P.S. Относительно мотивации. Это обычная лень и отсутствие навыка не начинать ерундовых дел и доводить неерундовые до конца. Читайте книги и статьи. Со временем количество даже не слишком понятной информации перейдет в качественно новое понимание концепций программной инженерии. Законы диалектики никто не отменял :) количество перейдет в качество :) Главное не лениться и уделять своему развитию каждый день не менее 15 минут (больше - лучше) только без пропусков. Еще два правила полезных тут и вообще в целом:
    1) принцип Парето (чтобы эффективно тратить свои ресурсы)
    2) закон Старджона (чтобы не быть слишком серьезным и не перегреваться) :)

    Найти и разобраться что это за такое - домашнее задание :)

    UPDATE: наткнулся вот на статью ain.ua/2016/06/22/656143 - Практическое руководство для тех, кто хочет стать профессиональным веб-разработчиком
    Ответ написан
    8 комментариев
  • Какой есть современный способ сделать анимированые гифки для сайта?

    sim3x
    @sim3x
    Записать видео
    Сделать гифку
    Офигеть от размера
    Оставить видео
    Ответ написан
    Комментировать
  • Замедляет ли работу компьютера размещение на рабочем столе папок с тяжелым содержимым (от 1 Гб и выше)?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Нет.
    Вообще никак не влияет.
    Ответ написан
    Комментировать
  • Во время document.ready известны размеры картинок?

    alsopub
    @alsopub
    Если не указаны width и height, то как они могут быть известны до полной загрузки...?
    Включил "Инструменты разработчика", поставил "Throttling: 2G", событие сработало после полной загрузки картинки.
    Возможно это особенности работы фиддлера.

    Попробуйте это - codepen.io/anon/pen/VaggrE
    То же самое, но на codepen.
    Результат - 0x0 (или 24x24), но только если изображение не в кеше браузера.
    Ответ написан
    3 комментария