• Как запустить Selenium на VPS?

    @twopizza Автор вопроса
    Нашел ответ.
    Нужно добавлять ключ -Djava.security.egd=file:///dev/urandom switch
    http://stackoverflow.com/questions/32707201/seleni...
    Эпично
    Ответ написан
    1 комментарий
  • Где хранить и как загружать конфиги и параметры (main-local, params-local) в Yii2?

    @matperez
    Может поступить как советуют https://12factor.net/ru/ и грузить данные в конфиг для прод сервера через переменные среды. В конфиге будет что-то вроде:
    'components' => [
      'db' => [
        'dsn' => getenv('db_dsn')
        ...
      ],
      ...
    ]


    А в dev окружении можно оставить обычный конфиг. Ничего страшного что там будет логин и пароль к локальной базе.

    А сами конфиги *-local.php храните там же они хранятся в yii-advanced - в папке environments.
    Ответ написан
    5 комментариев
  • Какой опыт Git нужен веб-разработчику для работы в команде в компании?

    iKapex
    @iKapex
    как я обычно делаю:
    1)создаю новую ветку со своей фичей(и ты автоматически в нее перейдешь):
    git checkout -b name-branch
    2)делаю что надо
    3)коммичу
    git add -A
    git commit -m "Name commit"
    git push origin name-branch

    4)Обновляю свою ветку по отношению к master (так образом твой последний коммит будет стоять на вершине)
    git pull --rebase origin master

    5)Возвращаюсь в нужную ветку (master или developer)
    git checkout master
    6)Обновляю свою локальную ветку
    git pull origin master
    7)Сливаю изменения и делаю пуш
    git merge name-branch
    git push origin master
    Ответ написан
  • Расскажите пожалуйста, как устроен кэшбек?

    Сайт A - кэшбек
    Сайт Б - магазин

    Когда вы заходите на сайт А, то он записывает вам в куки метку. Потом передаёт её магазину Б. При этом если эта метка есть у вас, то цены в магазине Б будут сразу выше на несколько процентов. Но если используете кэшбек, то вам якобы сделают скидку в 5-10%, но по факту нет.

    Изначально товар стоит - 10000
    Цена товара с меткой - 10500
    Цена со скидкой кэшбека - 10200

    200 рублей забирает кэшбек себе, а магазин ничего не теряет. Ну и потом вам возвращают 300 рублей, вы думаете "Ух ты!", а на самом деле вы дали магазину деньги, чтобы он через какое-то время вернул их вам. При этом ещё и купили товар дороже на 200 рублей
    Ответ написан
    7 комментариев
  • Почему собственный движок на php использует так много ОЗУ?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Скорее всего - проблема в многократном создании объектов класса без уничтожения тех, которые уже не нужны.
    Но правильнее, будет использовать один экземпляр такого класса, поддерживающего многомерную структуру (дерево, стек и т.д.) с клонированием объектов внутри самого класса. Это значительно экономит память на выделение для каждого нового создаваемого подобного объекта класса.
    Ответ написан
    1 комментарий
  • Как правильно спроектировать MYSQL для чата на node.js?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вы неправильно рассматриваете систему чатов.
    В чатах есть комнаты, внутри комнат сообщения и участники.
    Тет-а-тет это приватная комната с 2-ми участникам.

    room 
    - id
    - name
    - private
    
    participant (участник чата)
    - id
    - name
    
    roster (список участников чата)
    - room_id
    - participant_id
    
    history (история сообщений)
    - id
    - room_id
    - participant_id
    - timestamp
    - type (тип сообщения, иногда нужны системные сообщения от ботов)
    - text
    - deleted


    А теперь вперед - учить JOIN'ы!

    По поводу нагрузки - при правильном проектировании приложения, нагрузка на базу будет минимальной, преимущественно проверки, кто принадлежит к какой комнате и запись в историю.
    Сколько-нибудь значимая нагрузка будет при 10к человек онлайн. Поверьте, это очень большая посещаемость.
    При большей посещаемости ваша проблема будет решена горизонтальным масштабированием (шардингом БД).
    Ответ написан
    Комментировать
  • Как проверить существование email перед отправкой письма?

    mxms
    @mxms
    IT voodoo
    Наиболее надёжный способ проверить существование e-mail это сделать callout через инициацию SMTP-сессии. Достаточно будет получить 250 OK на команду RCPT TO с проверяемым адресом.
    Но он не даёт 100% гарантии, поскольку некоторые серверы всегда говорят OK на любой адрес в поддерживаемых им доменах.
    Ответ написан
    Комментировать
  • Что почитать об архитектуре приложений и фреймворков на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

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

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

    но совершенно не имею представления о правильной архитектуре приложений на php


    "Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

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

    Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

    Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

    или написании чего-то своего с нуля на чистом php


    Такое решение может принимать только разработчик у которого уже есть за плечами хотя бы пяток лет опыта работы с различными (не одним) фреймворком и языками. В противном случае вы только будете заниматься бесполезным велосипедостроительством.

    идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


    Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

    p.s. еще прочитайте тут: www.phptherightway.com
    Ответ написан
    12 комментариев
  • Как проигнорировать разметку yii при ajax запросе?

    @polar-bear
    return $this->renderAjax('block-blog', [
    Ответ написан
    Комментировать
  • Как пишутся системы оплаты для сайта?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Как осуществляется написание платежной системы касательно visa и mastercard или для конкретного банка? что делается в данном случае? (Допустим требуется работа со сбербанком и альфабанком).

    Из личного опыта:
    a. Приезжаете в офис банка у которого есть услуга "интернет эквайринг", показываете своё юрлицо, уставные документы, бенефициаров, обороты от 50 млн в месяц.
    * некоторые работают и с меньшими оборотами, но % будет крайне не выгодным.
    ** без запущенного и работающего проекта идти в банк бессмысленно.
    b. Ждете 2-6 недель пока СБ банка проверит все.
    c. Ждете 2-4 недели пока банк подпишет договор
    d. Получаете реквизиты и документацию API конкретного банка.
    e. Реализуете
    f. Ждете 1-2 недели пока банк проверит что у Вас все согласно их протоколу.
    g. Получаете боевые реквизиты.

    Учтите что:
    1. Если Ваши объемы меньше чем 50млн+ в месяц - с вероятностью 99% Вам будет СИЛЬНО выгоднее работать через посредника. Посмотрите на uniteller.ru , payture.com/ru , payler.com - если Вы будете достаточно убедительны на переговорах, вполне реально сторговать их до 2-2.5% даже на маленьких оборотах (1млн-5млн)

    2. Прямые API банков мягко говоря не современны. Как правило там не будет ни удобного личного кабинета, ни вменяемой службы поддержки - ничего. Зато будут проверки, требования бумажной отчетности и прочие милые сердцу советского бюрократа вещи.

    3. Риски при работе через посредника - по факту минимальны. Все приведенные выше делают выплаты ежесуточно, т.е даже если посредник накроется - Вы максимум рискуете дневным оборотом.

    С учетом данных пунктов, по моему мнению прямой договор с банком имеет смысл если у Вас настолько большие обороты - что разница в десятые доли процента окупает весь этот геморрой.
    По факту есть море проектов с большими оборотами (mamba, badoo, etc) кто продолжает работать через агрегатор, минимизируя расходы на юристов, бухгалтеров, техническую поддержку работы шлюза итд итп.
    Ответ написан
    1 комментарий
  • На чём лучше вести локальную разработку?

    boramod
    @boramod
    Упрощенно.

    Вагрант — система управлением конфигурацией конкретной машины.
    Докер — запуск изолированных процессов на машине.

    Докер.
    Это не виртуальная машина, а запуск изолированных процессов. Т.е., запущенный процесс думает, что он один единственный, и ничего вокруг нет. Это работает на уровне ядра Linux. Без использования виртуальных машин.

    В терминологии Докера есть Images и Containers.
    Image — образ, шаблон, на основе которого запускается Container.
    Image строится на основе какого-либо базового образа ОС.

    Container — сервис, запущенный и построенный на базе Image.

    Таким образом, вы можете построить несколько образов, например, образ для Nginx, образ для PHP, образ для MySQL. Вдобавок, вы можете построить несколько образо, для каждой желаемой версии PHP, MySQL и т.п.

    Каждый из этих образов будет иметь у себя в базе какую-либо ОС. Т.е., происходит изолирование окружения, на котором работает Docker.
    На базе построенных образов вы можете запускать Containers, т.е., непосредственно строить рабочее окружение. Каждый запущенный контейнер думает, что он запущен один, в образе наследуемой ОС. Но на самом деле, это всего лишь отдельный процесс, работающий на уровне ядра Linux, без виртуализации. Т.е., у вас нет накладных расходов на виртуальные машины. Изолирование контейнеров выполняется на уровне ядра.

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

    Оба инструмента хороши. Но у каждого свое назначение.

    Vagrant — великолепный инструмент для конфигурации удаленных машин с нуля, VDS/VPS и т.п.
    Docker — великолепный инструмент для быстрого развертывания/переконфигурации рабочего окружения, практически без изменения системы, на которую он устанавливается.
    Ответ написан
    6 комментариев
  • Какие требования к С# джуниору?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Джун джуну рознь. Чем больше знаний - тем лучше.
    Троелсен и правда очень медленно и педантично повествует. Он удобен как настольная книга джуниора, как справочник - по конкретным задачам копать. Но, ИМХО, Шилдт будет приятнее.


    Основные контейнеры - преимущества и недостатки. Сложность алгоритмов поиска и вставки, сортировки. Хэш-таблицы, хэш-код объектов, equality и как это все устроено. Неплохо бы знать про многопоточность и примитивы синхронизации (в общих чертах).
    Хорошо бы знать кое-что про платформу .NET - типы-значения и ссылочные типы (про стек и кучу), про GC с поколениями, SOH/LOH, как можно устроить утечку памяти -> IDisposable.
    Уметь делать запросы к базе через голый ADO.NET.
    По базам данных: владеть основными запросами SQL, писать и вызывать хранимые процедуры. Знать что такое и зачем нужны индексы, нормализация, View, где смотреть query execution plan.
    Суметь рассказать о том, что такое MVC, ориентироваться в основных паттернах.

    Если курс на веб, то понимать работу HTTP, REST, знать основы фронта (приоритет селекторов в CSS, "всплывающие" объявления переменных в javascript, разницу "==" и "===", чем отличается асинхронность от параллельности и чем это грозит).

    Вызовет уважение в глазах интервьюера: понимать и применять IoC/DI, уметь писать тесты, работать с ORM (EntityFramework допустим), async/await и SynchronizationContext.
    Ответ написан
    11 комментариев
  • Cocos2d-x или libgdx, что лучше для новичка?

    Mishok2000
    @Mishok2000
    Творческий программист
    Работал с двумя движками. На LibGDX писал свою первую мобильную игру. На Cocos2d-x делаем сейчас с небольшой командой по-настоящему глубокую и обширную, если так можно выразиться, аркаду. По этому опыт работы с этими двумя движками есть. Буду писать только по различиям.
    LibGDX:
    • Если хорошо знаешь Java - выбирай его, не задумываясь
    • Есть немалое количество туториалов на тему этого движка и готовых игр, а так документация на хорошем уровне
    • Не требует высокого уровня программирования
    • К сожалению, многие фреймворки, различные расширения для игр, анимационные стандарты, рекламные сервисы не поддерживают движок
    • Это джава. Она всегда лагает. Её с плюсами даже сравнивать нельзя
    • Частенько придется писать платформозависимый код, как на Java для Android, так и на Objective-C для iOS

    Теперь о Cosos2d-x:
    • Знаешь C++ - выбор сделан
    • Очень производителен в 2д разработке. Обходит по скорости даже юнити, про libgdx даже молчу. Но нужна ли тебе такая производительность?
    • Из-за того, что движок очень популярен, поддерживается большинством фреймворков, рекламных сетей, но ни так, как юнити. Это все же надо понимать.
    • Полностью кроссплатформенный. Есть даже встроенные средства для добавление поддержки внутриигровых покупок для iOS и Android одновременно, без написание кода под каждую ОС.
    • Открытый код. Постоянно развивается засчет этого движок.
    • Отличная архитектура у движка
    • Пи#здец, как мало туториалов и статей. А документация просто ужасная
    Ответ написан
    5 комментариев
  • Как в Vagrant конфигурировать Shared Folders на хосте под Win и виртуалке Linux?

    mannaro
    @mannaro
    Умею профессионально гуглить
    Я посоветую не мучатся с настройками shared folders, а просто подключиться к папке по SFTP и работать так. Это в разы ускорит запуск сайта из виртуалки.
    Проверено на себе.

    P.S: если, все-же, надо, то могу посоветовать настроить nfs.
    Ответ написан
    4 комментария
  • Как создать нормальное dev-окружение для PHP разработки на ОС Windows?

    @E_STRICT
    Главное правило – храните все файлы в гостевой системе.
    Проекты с большим количеством файлов будут тормозить и в Линуксе если эти файлы хранятся на основной системе. Да и логически это более правильно, держать файлы и базы данных в одном месте.

    PHPStorm умеет работать с файлами по SFTP. Если это не подходит, то для windows есть всякие проприетарные решения (платные и бесплатные) для монтирования удаленных файловых систем.

    P.S. Используйте Вагрант даже если перейдете на Линукс или OS X.
    Ответ написан
    1 комментарий
  • Как сделать range validator для yii2?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Для начала почитать офф. доки: www.yiiframework.com/doc-2.0/guide-tutorial-core-v...
    [ [ 'score' ], 'compare', 'compareValue' => 1, 'operator' => '>=' ],
    [ [ 'score' ], 'compare', 'compareValue' => 100, 'operator' => '<=' ],
    # или
    [ [ 'score' ], 'in', 'range' => [ 1, ..., 100 ] ],
    # или
    [ [ 'score' ], function ( $attribute, $params ) {
        if ( !( $this->$attribute >= 1 && $this->$attribute <= 100 ) ) {
            # Ошибка!
        } 
    } ],
    Ответ написан
    Комментировать
  • Как правильно загружать и обрабатывать изображения в Yii2?

    vyachin
    @vyachin
    Ищу работу
    1. Проверить несколько файлов можно так www.yiiframework.com/doc-2.0/guide-input-file-uplo... file валидатор умеет проверять массив файлов, а поскольку image валидотор сделан на его основе https://github.com/yiisoft/yii2/blob/master/framew...
    This validator checks if the input value represents a valid image file. It extends from the file validator and thus inherits all its properties.

    тогда и он может

    2. Image валидатор всего лишь получает метрики изображения https://github.com/yiisoft/yii2/blob/master/framew... и сравнивает их с теми что вы указали в настройках валидации. Можно создать валидное изображение с вредоносным кодом. Потенциально это дырка в безопасности. Можно обезопасить себя через "пересборку" изображения под конкретные размеры, для nginx почитайте тут habrahabr.ru/post/94435 или можно реализовать подобное на php с кешированием, но работать конечно будет медленнее.

    3. Есть, вот пример использования https://github.com/yiisoft/yii2/blob/master/framew...

    Ответ на ваш главный вопрос - это количество памяти которое кушает расширение отвечающее за работу с изображениями. GD нужно меньше, а вот ImageMagic кушает совсем не прилично много.
    Ответ написан
    1 комментарий
  • Как скачать шаблон с wix.com?

    AlexanderTsymbal
    @AlexanderTsymbal
    tsymbal.su
    Можно скачать страницу со всем подключенным содержимым в Google Chrome следующим образом:
    0. Сохраняем исходный код страницы, корректируем пути во всех <link> и <script>, прописывая свои значения, например, для стилей папку css/, для скриптов js/ и т.д.
    1. Включаем Инструменты разработчика F12
    2. Переходим во вкладку "Network", перезагружаем страницу (f5). Видим все файлы, которые вызываются при загрузке страницы. Сохраняем всё необходимое ручками (щелкаем по заголовкам правой кнопкой, сохраняем в необходимые папки) - все картинки, скрипты, файлы стилей, шрифты и т.д.

    Если css или js файлы закомпрессованы, есть онлайн-сервисы, позволяющие декомпрессировать css и js код - пробейте в гугле "css decompressor", "js decompressor"

    Этот вариант немного муторный, но очень действенный по сравнению со стандартным "Сохранить как", т.к. можно проконтролировать подгрузку всех картинок, которые вызываются через файлы стилей, а также исключить ненужные скрипты и др. файлы.
    Ответ написан
    Комментировать
  • Yii2 vs Repository pattern?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В ActiveRecord "модель" совмещена с репозиториями. Либо можете просто написать свой сервис, который будет этим делом заниматься. Главное же в репозитории в том, что код который его использует понятия не имеет о том где хранятся данные.
    Ответ написан
    Комментировать
  • Почему в расширении yii2-image возникает ошибка при использовании watermark?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Какая-же все же убогая библиотека, черт ногу сломит.

    Это явно порт экстеншена от 1,1, причем бездумный. Просто обернули все неймсмейсами, а то что класс Image, использующийся в определении методов не в том неймеспейсе никто и не подумал. Типично для Yii.

    Рекомендую избавиться от этой библиотеки и заменить на нормальные решения: intervention/image, gregwar/image...
    Ответ написан
    1 комментарий