• Сколько стоит разработка?

    lamo4ok
    @lamo4ok
    Программист
    Отдельно нужно считать две цифры:

    1. Сколько часов вы потратите на этот проект. Если это в итоге займет больше месяца, говорите об этом. Можно пригласить и второго человека.
    2. Сколько стоит час работы каждого, кто будет работать над проектом. А это может быть и дизайнер, и тот, кто будет заниматься содержимым, и ваш напарник по программированию. Даже если все это будете делать вы, разделите работы по областям и берите за них соответственно. Брать за наполнение сайта столько же, сколько за код, будет неразумно. Зато заказчик может задуматься о том, чтобы действительно привлечь для низкооплачиваемой работы ещё человека.

    Все, что делается иначе, приводит к проблемам у всех. Вы будете выгорать, заказчики оставаться недовольными или наглеть, в зависимости от вашей твердости.
    Ответ написан
    Комментировать
  • Doctrine: какой наиболее верный путь для настройки подключения?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Нашел ответ самостоятельно: для этого нужно не просто установить некий package вроде doctrine/orm, а установить bundle: doctrine/doctrine-bundle. Именно про них идет речь, когда создаются конфиги в папке config/packages. Это не значит, что для создания конфига всегда нужен бандл, а не просто пакет, но это значит, что не все пакеты имеют свои автоматически создаваемые конфиги.
    Ответ написан
  • PhpStorm: почему мне недоступно добавление remote interpreter для Docker?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Ответ нашелся сам собой: хотя у меня было установлено расширение PHP Docker для PhpStorm, оно не было активировано. После активации все пошло как нужно.
    Ответ написан
  • Почему отправленное письмо с помощью php скрипта попадает в спам?

    lamo4ok
    @lamo4ok
    Программист
    Код, который вы используете, шлёт письма без авторизации на каком-либо из почтовых серверов. Если только у вас не настроена отправка с авторизацией по ip. Чтобы вашим письмам доверяли, необходимо множество вещей, если вы захотите настроить свой собственный почтовый сервер, и только одна, если вы будете делать авторизацию на каком-либо уже настроенном публичном. Домен при этом может быть в адресе отправителя либо ваш, либо, если это не принципиально, этого публичного сервера. Про настройку своего домена на Яндексе или где-то ещё написано немало. В итоге вам нужен скрипт, который будет уметь в авторизацию по SMTP. Выше уже говорили про стандарт в таких вещах, phpmailer. Найдите примеры его использования, и все.
    Ответ написан
    Комментировать
  • Есть ли скрипт для быстрой настройки веб сервера?

    lamo4ok
    @lamo4ok
    Программист
    Скриптов для быстрой настройки сервера нет, а вот инструменты для быстрой настройки сервера - есть. Как вариант - уже упомянутые панели. Но если не нравится подход с ними, то есть еще несколько, они консольные:
    • Ansible
    • Shef

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

    А готовые скрипты и вообще готовые конфигурации - это так, на совсем непритязательного пользователя, в итоге придется все равно что-то допиливать.
    Ответ написан
    Комментировать
  • Почему webpack-dev-server не создает boundle, указанный в объекте output?

    lamo4ok
    @lamo4ok
    Программист
    Думаю, что вы уже разобрались, но тем не менее отвечу. Все дело в том, что webpack-dev-server изначально и не должен создавать никаких файлов на диске, так как он их держит в оперативной памяти.
    Ответ написан
  • WordPress: как организовать получение cid из GA в плагине?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Ответ был найден тут.
    Ответ написан
    Комментировать
  • WordPress: По каким причинам могут не отображаться сабменю установки и редактирования плагинов?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Данная вещь реализуется через define('DISALLOW_FILE_MODS', true); в config.php.
    Ответ написан
    Комментировать
  • Интернет магазин на чем?

    lamo4ok
    @lamo4ok
    Программист
    Если вы собираетесь сделать именно интернет-магазин, то есть вебсайт, где количество товаров будет грубо говоря больше десяти, то я бы для тестирования продаж советовал использовать готовые платформы-конструкторы интернет-магазинов, там наверняка будет достаточно шаблонов для вашей идеи, если не пытаться сделать идеальный вариант, которые при этом можно править на свой вкус, сразу будет весь функционал по платежным системам и прочему необходимому, а также множество других вещей, на которые не нужно будет тратить время и деньги.

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

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

    И уже далее, если вы понимаете, что товар или товары рабочие, вы можете составлять конкретное ТЗ для сайта, с опытом всех недочетов, замеченных ранее, и приступать к трате на более серьезный проект, то есть на свой собственный вебсайт.
    Ответ написан
  • Как через Composer автоматически устанавливать обновления пакета, когда он запрашивает новые версии уже установленных его зависимостей?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Как всегда, отвечу сам себе. Нефиг умничать и набирать "composer update laravel/framework", вместо этого нужно было просто "composer update". По логике вещей (ну, как я бы сделал), при первом варианте нужно все равно все зависимости подтягивать для этого пакета, но composer, видимо, считает иначе. Впрочем, в этом тоже есть свои логика.
    Ответ написан
  • Почему при создании composer-проекта в PHPStorm происходит его установка, а при инициализации composer после пакет уже не устанавливается?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Как всегда, отвечу и сам себе заодно. Я использовал разные пакеты в композере, в одном случае это был пакет laravel/laravel, насколько я помню, а во втором случае laravel/framework, и соответственно во втором случае не создавались в пакете банально нет ничего, кроме самого фреймворка как набора пакетов, грубо говоря, это просто набор классов. А в первом случае это не только файлы самого фреймворка, но и файлы приложения на нем. В общем, не совсем понимал, как устроено вообще все при использовании фреймворков.
    Ответ написан
    Комментировать
  • Как правильно тестировать адаптивную верстку?

    lamo4ok
    @lamo4ok
    Программист
    Эмуляторы мобильного устройства в браузерах - это не решение проблемы, так как в итоге в них используется не отдельный движок под ту конкретную модель, которая выбрана для эмуляции, а все тот же десктопный движок, правда передающий другие параметры сайту. Тестирование моб. верстки в полноценном режиме возможно в трех случаях:
    С самих устройств.
    С эмулятора, предоставляемого самой компанией, которая разрабатывает нужную ОС.
    С эмуляторв, аналогичным из предыдущего пункта, к которым предоставляется доступ через интернет различными сервисами. Платно, но полноценно. Как пример, saucelabs.com. Также, есть сервисы с тестированием на реальных устройствах, например - browserstack.com.
    Ответ написан
    Комментировать
  • Как наиболее кроссбраузерно и кроссплатформенно заверстать одинаковые по высоте и выравниваемые по центру строки блоки?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    В общем, проведя различные тесты и почитав что писали выше, пришел к выводу, что единственно верное решение все-таки скрипт плюс верстка. Вот код скрипта:

    $('.products_row').each(function(){
    		var arr = new Array;
    		$(this).find(".products_grid").each(function(){
    			arr.push($(this).height());
    		});
    		$(this).find(".products_grid").css("height", Math.max.apply(null,arr)+"px");
    	});


    Этот код решает проблему с одинаковой высотой в IE и Mozilla. То, что ниже - с выравниванием блоков посередине.

    Код html:

    <div class="products_wrapper">
        <div class="products_row">
            <div class="products_grid"
                 style="background-image: url(blah_blah.png);">
                <div class="products_title">
                    <p>blah_blah<br>
                        blah_blah<br>
                        blah_blah<br>
                        blah</p>
                </div>
                <div class="products_text">
                    <h6>blah_blah</h6>
                    <p>blah_blah</p>
                </div>
                <a href="#contact-form" class="products_order">blah_blah</a>
            </div>
            <div class="products_grid"
                 style="background-image: url(blah_blah.png);">
                <div class="products_title">
                    <p>blah_blah<br>
                        blah_blah<br>
                        blah_blah<br>
                        blah</p>
                </div>
                <div class="products_text">
                    <h6>blah_blah</h6>
                    <p>blah_blah<br>
                          blah_blah<br>
                          blah_blah<br>
                     </p>
                </div>
                <a href="#contact-form" class="products_order">blah_blah</a>
            </div>
            <div class="products_grid"
                 style="background-image: url(blah_blah.png);">
                <div class="products_title">
                    <p>blah_blah<br>
                        blah_blah<br>
                        blah_blah<br>
                        blah</p>
                </div>
                <div class="products_text">
                    <h6>blah_blah</h6>
                    <p>blah_blah<br>
                          blah_blah<br>
                     </p>
                </div>
                <a href="#contact-form" class="products_order">blah_blah</a>
            </div>
        </div>
        <div class="products_row">
            <div class="products_grid"
                 style="background-image: url(blah_blah.png);">
                <div class="products_title">
                    <p>blah_blah<br>
                        blah_blah<br>
                        blah_blah<br>
                        blah</p>
                </div>
                <div class="products_text">
                    <h6>blah_blah</h6>
                    <p>blah_blah<br>
                          blah_blah<br>
                          blah_blah<br>
                          blah_blah<br>
                     </p>
                </div>
                <a href="#contact-form" class="products_order">blah_blah</a>
            </div>
            <div class="products_grid"
                 style="background-image: url(blah_blah.png);">
                <div class="products_title">
                    <p>blah_blah<br>
                        blah_blah<br>
                        blah_blah<br>
                        blah</p>
                </div>
                <div class="products_text">
                    <h6>blah_blah</h6>
                    <p>blah_blah<br>
                          blah_blah<br>
                          blah_blah<br>
                          blah_blah<br>
                     </p>
                </div>
                <a href="#contact-form" class="products_order">blah_blah</a>
            </div>
        </div>
    </div>


    Код css (less):

    .products_wrapper {
        width: 100%;
        margin: auto;
        .products_row {
          display: inline-table;
          width: 100%;
          padding-bottom: 20px;
          box-sizing: content-box;
          text-align: center;
          .products_grid {
            display: inline-table;
            max-width: 29%;
            min-height: 100%;
            margin: 0 1%;
            padding: 10px;
            cursor: crosshair;
            .products_title {
              display: table-row;
              p {
                padding: 5px;
              }
            }
            .products_text {
              display: table-row;
              min-height: 100%;
              h6, p {
                padding: 5px;
              }
            }
            .products_order {
              display: table-row;
              min-width: 100%;
              height: 35px;
              padding: 10px;
              text-align: center;
              font-size: 26px;
              line-height: 35px;
            }
          }
        }
      }


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

    lamo4ok
    @lamo4ok
    Программист
    1. gulp-filter / gulp-ignore. Первый обрабатывает только указанное, второй игнорирует.
    2. использовать маску, что-то вроде:
    var src = {
        root    : 'src',
        sass    : ['src/sass/**/*.scss', '!src/sass/**/_*']
    }
    Ответ написан
    Комментировать
  • В чем может быть разница между двумя серверами, по-разному обрабатывающими сброс буфера в php?

    lamo4ok
    @lamo4ok Автор вопроса
    Программист
    Что ж, изучение мануалов и тесты дали о себе знать. Вот такой код заработал как нужно:
    header("HTTP/1.1 200 OK");
    header("Connection: close");
    ob_start();
    phpinfo();
    $size = ob_get_length();
    header("Content-Length: $size");
    ob_flush();
    sleep(2);
    echo __FILE__."<br>";

    с таким вот .htaccess:
    <FilesMatch \.php$>
        SetEnv no-gzip 1
    </FilesMatch>

    Что нужно было?

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

    2. Была найдена разница в конфигах серверов, переменная output_buffering на сервере, который обрабатывал код так, не как ожидалось, эта переменная имеет значение no value (на "правильном" сервере это значение установлено в 4096).
    Возможно, в итоге размер буфера берется откуда-то еще и в итоге страницы, на которых я пытался выводить сначала какую-то одинокую строчку, просто не отдавались из буфера на вывод. Как только я увеличил объем страницы, сделав php_info(), все встало на свои места. Вердикт - надо либо отдавать страницу большего размера (костыль), либо изменить настройки работы с буфером таким образом, чтобы функция ob_flush() гарантированно производила отправку содержимого буфера клиенту.
    Ответ написан
    Комментировать
  • Как закрыть висячий контракт(заказчик небыло больше месяца)?

    lamo4ok
    @lamo4ok
    Программист
    Заказ можно без проблем закрыть самому, ничего плохого в этом нет. Просто не заказчик будет первым, кто оставил отзыв, а вы. Деньги при этом автоматически спишутся вам на баланс по прошествии необходимого времени. Более того, через 2 недели заказчик лишится возможности оставить фидбек к такому заказу. Как уже написали выше, выставите "Job Completed Successfully" в качестве причины.
    Ответ написан
    4 комментария
  • Заказчик не закрывает fixed-price контракт третий месяц. Ждать до победного или закрыть самому?

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

    Более того, через 2 недели заказчик лишится возможности оставить фидбек к такому заказу. Если беспокоит то, что 25 долларов в профиле будут растянуты на два месяца, то переживать не стоит - либо просматривающий поймет, что заказчик пропал - маломальский опыт на Апворке быстро дает понимание, что это обычная ситуация, либо вы вообще можете скрыть суммы выплаченных вам денег за конкретное задание - в итоге фикс прайсы будут просто как фикс прайсы, и кто его знает сколько вы там заработали в итоге и что делали.
    Ответ написан
    Комментировать
  • Как правильно оформить cover letter?

    lamo4ok
    @lamo4ok
    Программист
    Учитывая, что у вас скорее всего небольшое количество коннектов, нужно иметь волю выбирать подходящие задания, не хватаясь за первое попавшееся. По опыту работы на различных биржах могу с уверенностью сказать, что задания, где заказчик проявил неуважение к исполнителю, написав свой оффер небрежно или просто непонятно, скорее всего и в работе окажется таким же небрежным и не слишком адекватным.

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

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

    Можете еще тут почитать. Так или иначе, пробуйте - если умеете выполнять свою работу, не будете путаться в английском слишком уж сильно и будете настойчивы, все получится.
    Ответ написан
    Комментировать
  • Стоит ли пробовать изменить отзыв/оценку на Upwork? И если стоит - с чего начать?

    lamo4ok
    @lamo4ok
    Программист
    как можно изменить оценку без просьбы об этом с противоположной стороны

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

    Я:
    1. Client leaves me feedback
    2. Client wants to change feedback
    3. I allow him to do so
    4. Client change feedback
    ...some time has passed...
    5. Client again changes feedback.
    5 - its real?

    Поддержка:
    5. Client again changes feedback. - It's not possible


    действительно невозможно изменить приватный отзыв, однажды его оставив?

    Не в курсе. Опишите проблему более подробно.

    могу ли я пободаться

    Можно. Тем более что за спрос денег не берут.

    мне предлагали работать в обход апворка через пайпал (даже когда я указал , что это против правил.)

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

    В любом случае советую всегда писать в службу поддержки.
    Ответ написан
  • Отправка формы на вордпресс, не приходит сообщение на почту, хелп?

    lamo4ok
    @lamo4ok
    Программист
    Я бы поставил на то, что у вас shared хостинг и там банально закрыты порты для отправки почты, 25, 465, 587. Это при условии, что вы все верно настроили для отправки почты через smtp, хотя на самом деле и без этого письма в большинстве случаев приходят от таких сайтов, просто попадают в спам.

    Попробуйте вместо вашего текущего плагина использовать WP Postman SMTP и в нем использовать авторизацию через Google API. В плагине есть инструкция с видео, как это настроить. Если проблема в закрытых портах, то с помощью этого плагина вам удастся ее решить. Так или иначе, он ведет лог отправленных писем, в котором можно посмотреть, какая именно ошибка происходит, плюс есть вариант самотестирования, в котором вы также сможете увидеть, на какой стадии отправки почты происходит ошибка.
    Ответ написан
    Комментировать