• Как криптобиржи гоняют монеты по кошелькам пользователей?

    Так как ты не имеешь прямого доступа к своему кошельку на бирже - биржа может просто не двигать деньги между кошельками, если перевод происходит между её клиентами.
    Тут схема идентична банку: банку не нужно для каждого денежнего перевода запускать инкассаторов, которые перевезут деньги между клиентами, и даже не нужно никакие ячейки у себя открывать - они просто ворочают циферками в своей собственной базе данных..
    Ответ написан
    4 комментария
  • Как сайт превратить в приложение android?

    @Shannon
    Самый простой и быстрой способ, не требуется разбираться что такое android, как под него писать, куда что добавлять, где взять эмуляторы, что такое webview, папки assets и т.д.:

    1. Ставите Intel XDK и создаете новый проект
    2. Тут же просто перетягиваете нужные файлы в папку www
    3. В эмуляторе (который кстати тут быстрый и ничего дополнительно ставить не требуется) тут же смотрим на результат

    Если всё устраивает то нажимаете build и выбираете android (лучше всего crosswalk, работает намного быстрее, но весит больше). В итоге получаете apk файл

    072a750601254d1d93a22b7c6445ccb9.jpg

    Так же, можете глянуть - habrahabr.ru/post/257889 если вдруг захотите попробовать реализовать сайт как HTML5-приложение
    Ответ написан
    3 комментария
  • Как убрать "табличку" прокрутки в Sublime Text?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Вы серьезно?
    fcf25c3e5f95423f8c3f9729ff951932.png
    Ответ написан
    5 комментариев
  • Как создать динамический QR код для оплаты через СБП?

    NeiroNx
    @NeiroNx
    Программист
    Ну пока что только у сбера оно худо бедно работает, у втб не работало. Хотя я в этом прямых препятствий не видел - сканировал кучу кодов на разных платежках - все одинаковые (по ГОСТ Р 56042-2014 ):
    ST00012|Name=ООО "Рога и копыта"|PersonalAcc=номер счета|BankName=Отделние №xxyy Самый лучший Банк|BIC=бик|CorrespAcc=корепонденский счет|Sum=100000|Purpose=Оплата за Рога|PayeeINN=инн компании|KPP=кпп|PayerAddress=адрес плательщика|PersAcc=лицевой счет|ServiceName=0000

    Вся эта строка кодируется в QR - любым доступным плагином. Размер элементов если сделать мелким то на дешовских камерах не будет работать - из за мелкого кода приходится подносить близко, а близко камера не фокусируется и бумажку с таким кодом можно использовать лишь по прямому назначению в туалете.
    Есть обязательные поля, есть произвольные - можно даже показания счетчиков передавать.
    Ответ написан
    5 комментариев
  • Где можно найти API для wildberries?

    Sgr_A
    @Sgr_A
    В личном кабинете поставщика, в разделе «Документы».
    Ответ написан
    Комментировать
  • Какой дистрибутив Linux выбрать на сервер?

    demimurych
    @demimurych
    Тот который вы лучше всего знаете
    Ответ написан
    Комментировать
  • Почему не работает stripos в php?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Потому что в кодировке utf-8 нужно использовать функцию mb_stripos и не забыть при этом указать кодировку в функции
    Ответ написан
    Комментировать
  • Как правильно хранить конфиги на продакшене?

    voronkovich
    @voronkovich
    Помимо уже указанного выше, почитайте про 12-факторные приложения, там ключи и пароли рекомендуется конфигурировать через переменные окружения. 12factor.net/config
    Соответственно, сами конфигурации, можно хранить в системе контроля версий.
    Ответ написан
    Комментировать
  • Почему webpack dev-server долго собирает проект?

    Эм, а зачем прогонять шрифты и картинки через webpack в dev режиме? Делайте это при сборке проекта.

    Такая задержка из за imgmin. Он ничего не кеширует, и снова и снова прогоняет ваши мегабайты изображений через себя.
    Ответ написан
    Комментировать
  • Как пофиксить проблему с v-on:change во vuetify?

    nurbakhyt
    @nurbakhyt
    developer
    В документации Vuetify описано по адресу https://vuetifyjs.com/ru/components/selects последний абзац.

    В https://codesandbox.io можешь запустить код, посмотрим, обсудим
    Ответ написан
    Комментировать
  • Typescript vs ES7?

    Yeah
    @Yeah
    Лично мне не нравится TS в плане дебага. Если ваша среда в докере или того хуже - вагранте, то у вас будут серьезные проблемы с маппингом, так как пути не соответствуют. Я к примеру так и не смог настроить дебаг для докера внутри вагранта.
    Ответ написан
    Комментировать
  • Почему не получается сохранить новую сущность после preUpdate event?

    @sand_alkr
    инженер-программист
    Я все сущности для проталкивания на этапе preUpdate сохраняю в массив в свойство класса, а на postFlush вытаскиваю и проталкиваю.
    class PurchaseListener {
    
        protected $notifications = array();
    
        public function preUpdate(LifecycleEventArgs $args) {
            $entity = $args->getEntity();
            $em = $args->getEntityManager();
            if ($entity instanceof Purchase) {
                ...
                        $notification = new Notification();
                        $notification->setUser($entity->getUser())
                            ->setText('блабла')
                            ->setType('success');
                        $this->notifications[] = $notification;
                    ...
            }
        }
    
        public function postFlush(PostFlushEventArgs $event)
        {
            if(count($this->notifications)>0) {
                $em = $event->getEntityManager();
                foreach ($this->notifications as $thing) {
                    $em->persist($thing);
                }
                $this->notifications = array();
                $em->flush();
            }
        }
    }
    Ответ написан
    Комментировать
  • Bootstrap 4: Как спрятать блок на маленьких экранах?

    DenZzeuro
    @DenZzeuro
    Мотоциклы, кофе
    В bootstrap4 есть классы d-block и d-none - вот вокруг них и строится скрытие блоков.

    Я приведу несколько примеров, чтобы было понятно:

    1) Чтобы скрыть блок только на sm используйте связку классов d-sm-none d-md-block - т.е вы явно скрываете блок на sm и делаете его видимым на md и выше (на xs блок так же будет виден)
    2) Чтобы скрыть блок на xs используйте связку классов d-none d-sm-block - блок будет скрыт на xs и виден на всех остальных размерах

    А вот всякие hidden-md-up и hidden-md-up, не смотря на кажущуюся удобность, были выпилены из бутстрапа4 после альфы.
    Ответ написан
    Комментировать
  • Web3.js 1.0.0-beta.34 - как правильно отправлять токены с кошелька на кошелёк?

    yartem
    @yartem Автор вопроса
    frontend newbie
    Сам спросил, сам и отвечу.

    Решение, как выяснилось, лежало немного в иной плоскости. Вот код:

    const
      tokenAddress = '0x58....e4',
      fromAddress = '0xaA....46c',
      privateKey = '0x09........79',
      toAddress = '0xE3....f7',
      decimals = web3.utils.toBN(0),
      amount = web3.utils.toBN(5),
      value = amount.mul(web3.utils.toBN(10).pow(decimals)), // value = 5 = 5*(10^0)
      sender = web3.eth.accounts.privateKeyToAccount(privateKey),
      token = abi => new web3.eth.Contract(abi, tokenAddress).methods;
    
    axios.get('https://api.etherscan.io/api?module=contract&action=getabi&address=' + tokenAddress)
    .then(answer => {
      const
        abi = JSON.parse(answer.data.result),
        data = token(abi)["transfer"](toAddress, value).encodeABI(),
        tx = {
          gas: '2000000',
          from: fromAddress,
          to: tokenAddress,
          data,
        };
    
      token(abi).name().call().then(console.log);
      token(abi).symbol().call().then(console.log);
      token(abi).balanceOf(fromAddress).call().then(console.log);
    
      sender.signTransaction(tx)
      .then(signedTx => {
        web3.eth.sendSignedTransaction(signedTx.rawTransaction)
        .then(console.log);
      });
    });


    Судя по всему, проблема была в том, что транзакция не была подписана. Так как перевод токенов, это не отправка какого-нибудь сообщения в духе "Hello world!", а вполне себе переброска реальных бабок, такая транзакция не может осуществляться с кошелька хозяина без его ведома. В статье How to send ERC20 token with Web3.js@1.0.0, ссылку на которую я приводил выше, и которой я руководствовался в процессе написания первоначального варианта кода, этот момент как-то странно обойдён автором. Если придирчиво изучить демо-сайт, ссылку на него Hideyoshi Moriya приводит в конце своей статьи, можно заметить, что автор использует MetaMask API, что многое объясняет, но о чём ни слова нет в самой статье. Судя по всему, MetaMask позволяет решить вопрос авторизации своими методами.

    Я же продолжил свои исследования. Усиленно копая интернет, через достаточно небольшой промежуток времени, наткнулся на аналогичный моему вопрос человека с ником Dmitry на русском сегменте StackOverflow.com: Как отправить токены ethereum с помощью web3.js. Цитировать его я не буду, но вот ответ человека с ником user3655581 привлёк моё внимание:

    Для того, чтобы перевести токены - нужно вызвать соответствующий метод контракта токена, предварительно его подписав. Примерный код:
    const sender = web3.eth.accounts.privateKeyToAccount(privateKeyFrom);
    const tokenContract = new web3.eth.Contract(abi, contractAddress);
    const data = tokenContract.methods["transfer"](toAddress, amount).encodeABI();
    const tx = { 
      gas: '2000000',
      from: fromAddress,
      to: contractAddress,      
      data,
    };
    const signedTx = await sender.signTransaction(tx);
    const result = await web3.eth
      .sendSignedTransaction(signedTx.rawTransaction);



    Руководствуясь приведённым кодом, я соорудил решение для своей задачи. Токены в количестве 5 штук успешно переправлены с одного кошелька на другой.

    Спасибо большое всем, кто хотел мне помочь в этом вопросе, но немного не успел. Если у кого есть что добавить — буду только рад вашим комментариям. потому что пока очень и очень смутно ориентируюсь в поднятом вопросе.
    Ответ написан
    Комментировать
  • Как узнать разность массивов javascript?

    kirill89
    @kirill89
    Если в коде много работы с массивами, могу предложить использовать lodash, тогда это делается так:

    _.xor(visibleObjects, allObjects)
    Ответ написан
    Комментировать
  • Чем Laravel лучше Symfony?

    andreybold
    @andreybold
    Laravel использует пакеты symfony, делая над ними «обёртку». Пробовал и то, и то, могу сказать что это обычный холивар и никто вам ничего толкового не скажет. Пользуйтесь тем что нравится или что требует заказчик/работодатель. То что какой-то движок популярней другого, это не всегда показатель «плохой»/«хороший».
    P.S. по работе и в личных проектах использую ларку, хотя один проект был сделан на symfony.
    Ответ написан
    Комментировать
  • Вернули деньги за домен, но он теперь занят. Что это значит?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Есть пара вариантов.

    - На этот же домен подал заявку другой человек у другого регистратора и тот подсуетился быстрее
    - Домен понравился регистратору и он имитировав ошибку решил забрать его себе или перепродать
    Ответ написан
    Комментировать
  • Электронная информационная доска для жильцов многоквартирного дома?

    @volokhonsky
    Самое ультрапростое — сделать группу вконтакте и на любом сайте разместить виджет для записи в эту группу. У этого виджета есть пункт «подписаться на SMS». Просто так в меню группы такого пункта нет. А в виджете — есть.
    Вот. Но это, конечно, только для тех, кто есть вконтакте.

    В принципе, можно популярный движок под эту задачу допилить напильником — Wordpress, Joomla. Если сделать вконтакте не группу, а страницу, то после того, как там наберётся подписчиков, надо написать в поддержку и они откроют возможность импорта RSS.

    Но вот насчёт SMS — не знаю, надо поискать компании, которые гейты предоставляют такие. И может исходя из их возможностей движок подбирать.
    Ответ написан
    4 комментария