• Выбор: сделать 2 приложения (бесплатное и платное) на Андроид или сделать одно, но с in-app purchase?

    @kaftanati
    Инженер-энтузиаст
    Моя история:
    1е приложение было выпущено сразу бесплатным и без рекламы.
    2е приложение - версия ПРО - уже отдельно пришлось выпустить - бесплатное сделать потом платным нельзя, при той же кодовой базе приходить дважды собирать два проекта
    3е приложение - эволюция первого проекта - было сразу со встроенной покупкой - разблокировка до Про.
    Итоги: при вдвое меньшей базе пользователей приложение с инаппом приносит столько же сколько покупка Про - и при этом пользователи не задают вопросы, как перенести данные.
    Совет: сделайте встроенную покупку и не добавляйте рекламу вовсе - зарабатывайте на благодарных пользователях, а не на задолбанных рекламой.
    Ответ написан
    Комментировать
  • При компиляции проекта в Xcode требует пароль от связки ключей Mac Developer?

    @GoodwinNick
    iOS developer from Odessa
    Я мучался 3 дня. Пока просто не нажал enter с пустым полем. Оно создало эти ключи автоматом но без пароля.
    Ответ написан
    1 комментарий
  • Разработка на Mac?

    @ADOLF88HITLER
    Вот хинт ещё, если будете пользоваться Terminal.app: можно поставить курсор в любое место строки, кликнув с зажатым альтом.
    Ответ написан
    2 комментария
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Как убрать конкретный сайт из своей выдачи Google?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нужно добавить к поисковой фразе: -site:domain.ltd
    где domain.ltd - домен, который нужно исключить из поиска.
    Ответ написан
    2 комментария
  • Брокер очередей (с клиентом под PHP) с указанными возможностями?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    zeromq посмотрите

    но, честно говоря, "ограничение по параметру" плохо укладывается в суть очередей, так что вряд ли
    Ответ написан
    5 комментариев
  • Как убрать конкретный сайт из своей выдачи Google?

    @ArBis
    Достаточно указать знак «-» и написать url сайта вроде «программирование -example.site»
    Более подробная фильтрация:
    https://support.google.com/websearch/answer/246643...
    Ответ написан
    4 комментария
  • Как пройти проверку приложения на Facebook?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    Тоже с этим мучался. У нас задача была такая, получить список всех музыкальных исполнителей, которые лайкал пользователь, и на основе этого списка порекомендовать ему ближайшие концерты в его городе.

    Добивались разрешения на user_likes. У нас удалось получить одобрение так:
    1 Мы создали кнопку "Порекомендовать мне концерты"
    2 По нажатии на эту кнопку предлагается кнопка "Авторизоваться через Facebook"
    3 По нажатии на "Авторизоваться через Facebook" сделали авторизацию в новом всплывающем окне, в котором после авторизации на 3 секунды показывается сообщение "Вы успешно авторизованы! Подробности отправлены на ваш email xxxx@xxxx.com"
    4 Всплывающее окно убиваем с помощью window.close() - это разрешено когда дочернее окно было открыто в вашем скрипте
    5 Самое важное, так как у нас еще нет прав на user_likes (лайки пользователя), то мы после успешной авторизации показываем пользователю фейковый список концертов с сообщением, на основе ваших интересов, мы можем порекомендовать вам сходить на Сплин в Олимпийском 26 ноября (просто с потолка)

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

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

    6. Последний важный момент, нужно в developers.facebook во вкладке "Роли -> Тестовые пользователи" нужно создать пару тестовых аккаунтов с рандомными данными (для тестировщиков из facebook)

    Главные причины отказа
    1 Не созданы тестовые пользователи в панели управления приложением
    2 Юзеру не понятно что он аторизован (после авторизации обязательно нужно показать сообщение типа вы успешно авторизованы и показать ему ссылку на управление его аккаунтом на вашем сайте, можно по почте, а лучше сразу его отправить в личный кабинет)
    3 Не удалось доказать полезность функционала для пользователя
    Ответ написан
    3 комментария
  • Как пройти проверку приложения на Facebook?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вам нужно пройти ревью.
    Администратор/разработчик приложения может получить права, с ними можно записать видео работы приложения. Кроме администратора есть тестовые пользователи.
    Обязательно прочитать и неукоснительно соблюдать это https://developers.facebook.com/policy/
    Вам нужно доказать, что ваше приложение приносит пользу юзеру. Тупо выгрузка фоток в альбом ничего не дает. Нужно как-то обыграть это дело. Сделать конкурс фотографий или что-то такое, чтобы пользователю было интересно этим пользоваться.
    Ответ написан
    2 комментария
  • Как избежать "OOM command not allowed when used memory > 'maxmemory'." в Redis/PHP?

    @PapaStifflera
    Родился, вырос...
    Ни как. Redis, в отличии от Memcache, гарантирует сохранность данных. Т.е. вы выставляете для записи TTL и она будет храниться ровно столько времени, сколько указано в значении TTL. Memcached вытесняет старые данные в случае, если памяти для новой порции не хватает не смотря на TTL.
    Ответ написан
    1 комментарий
  • Как установить русскую кодировку в docker контейнере Ubuntu?

    Xuxicheta
    @Xuxicheta Автор вопроса
    инженер
    сам задал, сам отвечаю
    FROM ubuntu:16.04
    #не задавать вопросов
    ENV DEBIAN_FRONTEND noninteractive.
    RUN apt-get update
    RUN apt-get upgrade -y
    RUN apt-get install -y language-pack-ru
    ENV LANGUAGE ru_RU.UTF-8
    ENV LANG ru_RU.UTF-8
    ENV LC_ALL ru_RU.UTF-8
    RUN locale-gen ru_RU.UTF-8 && dpkg-reconfigure locales
    ENTRYPOINT /bin/bash

    пока получилось только так. создаю свой образ с убунтой и уже из него свои приложения
    Ответ написан
    Комментировать
  • Чем отличается redis от RabbitMQ?

    RabbitMQ - полноценный сервер очередей, имеющий под капотом "свою" базу данных. Redis - база данных, над которой можно построить сервер очередей. Строить сервер очередей над Redis имеет смысл, имхо, если полноценный сервер не нужен, а Redis уже используется как база данных.
    Ответ написан
    Комментировать
  • При запросе на photos.getPhotos возвращается PERMISSION_DENIED: User must grant an access to permission 'VALUABLE_ACCESS'?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Возможно сделать автопубликацию в Odnoklassniki?

    нужно сначала получить VALUABLE_ACCESS - для этого отправляется письмо на адрес api-support@ok.ru с указанием - зачем он вам нужен и кто вы:
    6aca12a1f3634824ac759389b2697aa9.PNG
    после чего (дня через 2-3) присылают ответ:
    55ac45ee58b44d1ba6b7d42558706092.PNG
    и только после этого вы сможете пользоваться методами, которые требуют 'VALUABLE_ACCESS'
    а так, без этого вы не можете пользоваться.

    п.с. API у Одноклассников самое "строгое" среди API : Вконтакте, Твиттера, Иснтаграмма и Фейсбука
    Ответ написан
    1 комментарий
  • Как ограничить вызов API тремя запросами в секунду?

    Ahen
    @Ahen
    Универсальный дилетант
    Если "для нескольких пользователей", то ограничивать нужно каждый поток отдельно, ведь ограничение в 3 запроса накладывается на 1 токен.

    Решение на php: пишем демона, который будет дергать запросы с базы данных (ну скорее всего в mysql) и выполнять их по очереди, соответственно удаляя из таблицы уже отработанные запросы. А ваши старые демоны будут складывать в базу данных эти запросы.

    Если у вас небольшое приложение, то советую реализовать на nodejs, используя готовую либу vk-io https://github.com/negezor/vk-io . В данной либе реализован сбор запросов в execute, как итог - мы можем делать 75 запросов в секунду с одного токена.
    Ответ написан
  • Mysql в Docker без пароля. Безопасно ли?

    @huwesu
    вполне.
    к примеру на хостинге Гугля в облаке тебе отдают экземпляр MySQL именно без паролей.
    Хочешь - ставь сам дополнительно.

    полагаю там грамотные спецы.
    Ответ написан
    Комментировать
  • Как установить imagick для PHP7.1 (docker, alpine)?

    Tyranron
    @Tyranron
    В таких случаях через sub-shell можно скормить команде то, чего просит.
    Например:
    # Install Xdebug
    RUN apk add --update --no-cache --virtual .tools-deps \
                autoconf g++ libtool make \
     && (yes | pecl install xdebug) \
     && apk del .tools-deps \
     && rm -rf /var/cache/apk/*
    Ответ написан
    2 комментария
  • Что использовать для создания контактов на Android?

    @aol-nnov
    можно, например, погуглить "custom account type" и "syncadapter"
    Ответ написан
    Комментировать