• Как переквалифицироваться из разработчика в руководителя?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Прежде всего, для менеджера важно понимать людей. Всё что они говорят, что не говорят. Чётко улавливать интонации, язык тела. Понимать их мотивы.
    Не менее важно умение убеждать. Разными способами - договариваясь, запугивая, манипулируя нежными чувствами, всё что угодно. Отдельно выделю, относящиеся к этому пункту навыки, грамотной речи, поставленного голоса и умения правильно держать себя.
    Эти умения лучше развиваются не в стерильной корпоративной среде со стандартизированной культурой поведения, а в жизни повседневной. Заставь 6-летнего племянника перестать баловаться, заставь ханыгу соседа перестать курить в подъезде, запрети подруге ПМС и фразы "Ничего не случилось!" и "А мама сказала..."

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

    Имея базу необходимых навыков, можно приступить к теории. Во-первых, теории управления ИТ-службами - ISO 20000, ITIL, PMBoK и Agile. Во-вторых, очень ценно знать прикладную область - например, бизнес-процессы розничных и оптовых продаж, основы учёта, в том числе бухгалтерского, основные законы, регламентирующие деятельность и прочее. Бизнес-литературу и книги по личностному росту сразу в помойку. Не то чтобы в них не встречалось ничего хорошего, но крайне редко и очень мало.

    Наконец, не обязательно ждать пока руководитель освободит место. Если в вас действительно созрел менеджер, вы можете его подсидеть.
    Ответ написан
    Комментировать
  • Разве Composer бесполезен в 2017?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Пока проект на старте, то никто не пишет тесты, ибо это долго, а стартовые инвестиции имеют свойство кончаться. Да и о рефакторинге особо никто не задумывается. Позже, когда проект уже выходит на самоокупаемость или даже прибыль, то встаёт вопрос стоимости внесения изменения.
    Судя по тому что используется Кохана, то проект не месяц назад начался. А значит стоимость внесения изменений уже высокая и тимлид даёт вам понять что именно такая стоимость всех устраивает. А то пришёл тут выскочка, который сейчас всё в порядок приведёт и половина штата программистов окажется не нужна. Вдруг ещё его уволят :)
    Ответ написан
    Комментировать
  • Надо ли платить за CKEditor?

    @Z-r
    IANAL, TINLA.

    CKEditor — это свободная программа, то есть коль скоро вы получаете ее копию, вам сполна возвращается право без уплаты роялти использовать ее в любых целях, изменять, распространять в неизменном или измененном виде за плату или без.

    То есть нет.
    Ответ написан
    Комментировать
  • Насколько у меня правильный код ООП php?

    @D3lphi
    Здесь плохо всё, к сожалению.

    Начнем с того, что вы неверно наследуете классы. Почему у вас класс, отвечающий за подключение к базе данных является родителем класса, работающим с заказами? Наследование применяется, если можно сказать, что что-то является чем-то. Например, разработчик является работником; компьютер является устройством и тд. Здесь же у вас вообще близко такой логике не получится следовать. Вы должны передавать хотя бы объект для работы с бд через инъекцию, например, в конструктор. В идеале, нужно использовать паттерн репозиторий для работы с базой данных.

    Класс SearchOrder у вас не только выполняет запросы, но еще и работает с данными, хранит состояние этих самых данных, фильтрует данные (strip_tags()). Непорядок. Это все нужно разделять. У вас вообще получаются какие-то богообъекты, которые умеют во все.

    Вы каждый раз повторяете строки с подготовкой запроса, биндингом параметров, отправкой запроса и тд. Не думали, что неплохо бы было написать какую-нибудь обертку и выполнять запросы как-нибудь так:
    $result = $wrapper->select("SELECT * FROM `tablename` WHERE `id` = :id", ['id' => 5]);

    ?

    Вы вызываете connect() в методах. То есть, каждый вызов этого метода будет приводить к установке нового соединения с базой данных, даже если оно уже было установлено. Соединение с базой данных это достаточно дорогостоящая операция.

    Зачем вы используете свойства, если можно обойтись обычными локальными переменными:
    $this->orderID = (int) strip_tags($orderID);
    $this->column = (string) strip_tags($column);
    $this->value = (string) strip_tags($value);

    ?

    Почему вы стриппите тэги у идентификатора? вы настолько не уверены в том, что влетает в функцию:
    strip_tags($orderID);
    ?

    Если вы не используете php 7 и, как следствие, скалярный тайпхинтинг, то должны делать проверки на тип входящего аргумента. Если что-то не так с типом, бросаем исключение (А не приводим его к нужному)! Например:
    if (!is_string($arg)) {
        throw new InvalidArgumentTypeException('string', $arg);
    }

    Это в идеале. Вы не обязаны это делать, конечно же. Но вот такие проверки делают приложение безопаснее. Хотя, опять же, повторюсь, в 2017 нужно начинать новые проекты на php 7.1+.

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

    Кроме всего прочего, почитайте про стандарты оформления кода. Вы им не следуете.

    Вам пока рано писать такие велосипеды. Судя по всему, у вас нет опыта вообще. Посмотрите готовые решения: фреймворки, ORM, изучите их, хотя бы поверхностно разберитесь, как оно работает и уже потом пробуйте что-то сделать, исходя из полученных знаний.

    Желаю успехов!
    Ответ написан
    1 комментарий
  • Как законно можно использовать купленный шаблон сайта?

    @awdemme
    1, 2, 3. Зависит от того, что написано в лицензии. Иногда на выбор предоставляются разные лицензии (очень по разным ценам)
    4. Никто не будет возражать. Ведь в конечном итоге шаблон покупается для сайта, под который его и правят.
    5. Если при приобретении требуется указать домен - легко. В противном случае - никак. Считается что люди, в среднем, не воруют. Но можно и нарваться, прецеденты бывали. Не часто.

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

    У разных продавцов могут быть разные условия - лучше спросить непосредственно у них.
    https://help.market.envato.com/hc/en-us/requests/new
    Ответ написан
    Комментировать
  • Как законно можно использовать купленный шаблон сайта?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    На Envato Elements хочу купить шаблон BOOKRA. Подскажите как законно использовать купленный шаблон?


    Там есть два варианта:
    - За $17: Use, by you or one client, in a single end product which end users are not charged for. The total price includes the item price and a buyer fee.
    - За $850: Use, by you or one client, in a single end product which end users can be charged for. The total price includes the item price and a buyer fee.

    1. Сколько коммерческих сайтов могу создать на одном купленном шаблоне один или сколько угодно?

    В данной ситуации только один. В ситуации в вакууме - смотрите лицензию, которая прилагается.

    2. Картинки шрифты и пр. в шаблоне будут тоже моими? могу я их использовать для другого сайта?

    В данной ситуации шрифты с google fonts + font awesome. Вы можете их использовать как вам угодно. Картинки не прилагаются (Images used in the Preview demo are not included in the downloaded package). В ситуации в вакууме - смотрите лицензию.

    3. Можно убрать все упоминания автора шаблона или где-то нужно оставлять?

    В данной ситуации вроде бы не нужно упоминать автора (но может я что-то пропустил, почитайте все, что там есть, еще раз).

    4. Если я купил шаблон, создал сайт продал заказчику, имеет право другой разработчик править сайт заказчика?

    Да. Но можно докупить поддержку шаблона у автора (опционально).
    Ответ написан
    1 комментарий
  • Как законно можно использовать купленный шаблон сайта?

    Jump
    @Jump
    Системный администратор со стажем.
    Как законно можно использовать купленный шаблон сайта?
    Купить шаблон сайта невозможно.
    Можно купить право на использование шаблона сайта.
    1. Сколько позволит правобладатель.
    2. Нет, не будут, использовать можете, с согласия правообладателя
    3. Если позволит правообладатель.
    4. Разумеется.
    5. По разному, например смотрят по бухгалтерской книге - есть ли оплата от этого человека или нет.
    Ответ написан
    3 комментария
  • Как передать ответ из php на клиент?

    @stoik_kpd
    $.ajax({
        type: "POST",
        url: 'http://.../resp.php',
        success: function(msg){
          alert( "Прибыли данные: " + msg );
        }
      });


    echo 'любой текст... отправится на фронт, включая тексты о ошибках';
    Ответ написан
    3 комментария
  • Как сохранить товары в корзину на сайте?

    @entermix
    Что если записать всю информацию, а товар будет изменен? Хранить ID товара будет более правильным вариантом.
    Ответ написан
    4 комментария
  • Как преобразовать массив в PHP?

    Stalker_RED
    @Stalker_RED
    $input = [
        "quantity" => [0=>1, 1=>2, 2=>3, 3=>4],
        "color" => [0=>5, 1=>6, 2=>7, 3=>8],
    ];
    
    $result = [];
    foreach( $input as $propertyName => $values ) {
        foreach ($values as $index => $value) {
            $result[$index][$propertyName] = $value;
        }
    }
    print_r($result);

    sandbox.onlinephpfunctions.com/code/416005288eebf8...
    Ответ написан
    1 комментарий
  • Как создать админскую панель?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    > Можете объяснить, почему АП нельзя сделать теми же средствами, что и сайт - html+css/html+css+js для вида, php/php+sql для функционала, если речь идёт об удалении, добавлении и изменении постов?

    WUT?
    Админки в общем-то во всех CMS да и не только CMS так и сделаны - теми же инструментами, что и сайт. Откуда у вас такая информация, что нельзя?
    Ответ написан
    2 комментария
  • После подключения bootstrap изменения в style.css стали подхватываться через раз, как исправить?

    Можете еще просто обновлять страницу через CTRL + F5
    Ответ написан
    Комментировать
  • Какие есть нормальные методы по созданию многоязычного сайта?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Есть несколько стандартов для локализации (i10n) и интернационализации (i18n).

    Довольно неплохой разбор разных правил сделан здесь
    guides.rubyonrails.org/i18n.html
    https://www.npmjs.com/package/i18n
    https://docs.angularjs.org/guide/i18n
    php.net/intl

    Везде несколько разный подход, но в целом все сводится к созданию карты и условностей.
    Лично я бы хранил данные для перевода в 2х местах.
    Первое место - самый быстрый способ хранения для вашего ЯП/фреймворка. Этот вариант для продакшена и нагрузки.
    Второе место - база, для редактирования. После редактирования автоматическая генерация файлов для первого варианта.
    Механизм перевода должен быть реализован так, что если в режиме разработки/тестирования встречается незнакомый перевод, он сохраняется в базу. В дальнейшем это приводится в нормальный вид профессиональным переводчиком, для которого должен быть создан соответствующий интерфейс.
    Ответ написан
    Комментировать
  • Какие есть нормальные методы по созданию многоязычного сайта?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В большинстве случаев, первый вариант лучше.

    1. Поддерживать языковые файлы - проще, чем sql (проще и свободнее синтаксис)
    2. Проще расширять в случае дополнительных языков - главное заранее продумать именование языковых файлов, чтобы переход на язык автоматически подгружал нужный файл, типа include lang_$lang.php

    Хранить все в базе имеет смысл только из-за организационных/security решений (например дать доступ к базе безопаснее, чем к файловой системе, и тогда все хранить в базе)
    Ответ написан
    Комментировать
  • Какие есть нормальные методы по созданию многоязычного сайта?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    первый общепринятый

    en={}
    en['hw'] = 'Hello, Microsoft Word!'
    en['title'] = 'This is my multilangual site'
    
    ru={}
    ru['hw'] = 'Привет, Ворд'
    
    #templates/ru.html
    title = ru['title'] if 'title' in ru else en['title']


    та же особенность у редактора - сразу видно состояние перевода на конкретный язык

    единственные вариации: хранение в разных языковых файлах/модулей массивов с одинаковыми именами, лбо в одном с именами языков, обычно хранят в разных, т.к. а) не нужно включать ненужное; б) языки - это не только слова, но и форматирование (оцените длину немецких слов), и таким же образом хранят параметры div ов и проч
    Ответ написан
    Комментировать
  • Как правильно вычленить и вывести фото пользователя facebook из ответа API?

    Я не знаю, как какие правила у фейсбука, но для решения подобной задачи с ресурсом ВКонтаке я просто брал url картинки и вставлял его прямиком в html. Примерно так:

    Брал html-код блока с картинкой из tpl-файла.
    <div> <img src="%url%" /> </div>
    $html = file_get_contents("tpl/html.tpl");

    Потом пыхом заменял %url% на, собственно, сам url и выводил на экран полученный код:
    $html = str_replace("%url%", $url, $html);
    echo $html;


    Картинку скачивать не нужно. Зачем? Вы просто вставляете url, а пользователь просто видит красивый (надеюсь) результат.
    Ответ написан
    Комментировать
  • Какая рекламная сеть лучше для монетизации сайта?

    orlov0562
    @orlov0562
    I'm cool!
    Многое зависит от контента, тематики, региона и поведения пользователей.
    В общем случае, лучше всего проводить тестирование и смотреть на выхлоп.
    Ответ написан
    Комментировать
  • Как вывести даты и время с учётом часовых поясов?

    anton_lazarev
    @anton_lazarev
    $date = new DateTime('2017-02-09T00:20:00+05:00');
    
    var_dump($date);
    
    object(DateTime)[367]
      public 'date' => string '2017-02-09 00:20:00.000000' (length=26)
      public 'timezone_type' => int 1
      public 'timezone' => string '+05:00' (length=6)
    
    $date->setTimezone(new DateTimeZone('Europe/Moscow'));
    
    var_dump($date);
    
    object(DateTime)[367]
      public 'date' => string '2017-02-08 22:20:00.000000' (length=26)
      public 'timezone_type' => int 3
      public 'timezone' => string 'Europe/Moscow' (length=13)
    Ответ написан
    2 комментария
  • Как получить public_profile с FaceBook полностью, а не только к [name] и [id]?

    astec
    @astec
    Разработчик https://debtstracker.io/
    Добавить параметр fields.

    Например так:

    me?fields=about,age_range,birthday,name
    --
    Alex
    Ответ написан
    Комментировать