PHP设计模式-工厂模式

  • 工厂模式

    工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。

    简述:假设,我们现在在获取微信端消息的通知,消息有许多类型,比如文本、图片、语音等,这些类型都包含在微信推送的内容里,需求是要把这些内容都保存在本地的数据库,我们来模拟一下,方法大概有两种:

    微信端消息的通知:用户向某服务号发送信息或触发了一些事件(扫码,上报地理位置等),如果此服务号开启了开发者的一些设置,那么微信会把相关信息或事件推送给服务号设置的接收信息地址。

  1. 获取到微信推送的内容后,判断出信息类型,然后实例化不同的对象来保存对应的信息。
    // 模拟获取信息
    $message = file_get_contents("php://input");
    switch ($message->type) {
        case 'link':
            $object = new Link();
            $object->save($message->content);
            break;
        case 'text':
            $object = new Text();
            $object->save($message->content);
            break;
        case 'image':
            $object = new Image();
            $object->save($message->content);
            break;
        case 'voice':
            $object = new Voice();
            $object->save($message->content);
            break;
        case 'video':
            $object = new Video();
            $object->save($message->content);
            break;
        case 'location':
            $object = new Location();
            $object->save($message->content);
            break;
        default:
            # code...
        break;
    }
    
  2. 使用工厂模式,可以有助于减少主代码流中基于条件的复杂性。
    // 模拟获取信息
    $message = file_get_contents("php://input");
    class MessageFactory {
        public static function create($type) {
            $class = ucfirst(strtolower($type));
    
            return new $class;
        }
    }
    
    $objcet = MessageFactory::create($message->type);
    $object->save($message->content);
    

    可以看到,第二种方式明显比第一种更简洁,不需要做过多的判断。另外,如果微信端增加了新的信息类型,我们在接收时也不需要再增加判断语句,只要增加一个处理对应类型的类即可。

    这种模式有点像硬币自动分拣器一样,不需要每个都判断它是五毛的还是一块的硬币,它会自动去到自己的存放点。见下图:
    硬币自动分拣器

数字货币的下一个小劫

  • 比特币的价值在于非法交易,洗钱或者资产转移。当然,还有资产掠夺,俗称“割韭菜”。

    在比特币大户(持币量在五位数以上)和交易平台等核心利益者的围剿之后,被掠夺者不计其数,多是不明就里,想短期内获取高额回报的投机者和暴富幻想家。投机比特币,就像是赌博,这是一场零和游戏,是极少数人掠夺其他玩家的钱,这个道理也许很多人明白,但都存在侥幸心理,希望自己不是最后被掠夺的人。

  • 现在,比特币的价格,除了上面所说的条件支撑,还有一个因素—-ICO。

    ICO最早出现在2013年,那时也有一轮比特币的暴涨,但ICO远不如现在“威名远扬”,现在ICO里项目繁杂,名目众多,五花八门,可以说是多如牛毛,但正如某些圈内大佬所说:99%的项目就是为了圈钱。这些项目只接收比特币,莱特币,以太坊等已经在国际流通,且具有一定价格的数字货币,众多投机者必须到交易平台充值人民币,兑换成ICO项目规定的对应的数字货币,然后众筹给这个项目,换成项目方发行的代币,等待代币上线某交易平台,其他“韭菜”接手,完成自己的财富增值。

    大部分ICO项目都很离谱:
    1.很多人把一个原本没有融资能力的项目加一个区块链的外衣来圈钱或蒙钱;
    2.很多项目根本没有落地,拿着白皮书就去融钱,而且还能融到钱;
    3.找一些名人、圈内大佬站台,很多项目连白皮书都没有,同样也能拿到钱;
    4.很多白皮书里写的企业高管,团队成员全是伪造,是前腾讯、前facebook里xxx要员等,在搜索求证后发现,很多都是”克隆人”;
    5.项目里声称,在和某些大公司合作,比如与Starbucks,Amazon合作等也是编造。
    ……

    有的项目甚至和某些交易平台、圈内大佬合作,一起掠夺别人,比如:利用某些平台做交易为某项目众筹,相当于把平台客户的钱,变成自己口袋里的钱。

    数字货币的疯狂,带动了ICO圈钱。ICO项目又反过来带动了数字货币的上涨。正如早期入场者说的:“都是一条船上的,现在应该唱多,好有嫩韭菜接盘,让我们跑。”

  • 投机者的劫难

    在现在滥竽充数的项目里,很多投机者等来的也许不是他们炒新所期待的结果,而可能是项目根本落不了地,代币上不了线,甚至是项目方跑路等劫难。

  • 数字货币的小劫

    为什么只是小劫呢?

    当被欺骗的人越来越多,怨声载道的时候,也是有关部门不得不整治的时候,这时会出现很多措施来监管ICO,ICO的名声为应声而下,很多代币也会下线,此时会戳破很多谎言,比特币等数字货币价格肯定会下跌,但也不至于伤筋到骨。所以我称之为小劫。

  • 总结

    “天欲其亡 必令其狂”,现在的ICO项目集资,让我想起了2014~2015年的互联网O2O创业拿风投,当时做出个手机app就能拿到钱。相同点是都是骗钱,不同点是骗不同人的钱。是泡沫都有破的时候,不像房市,有ZF托底调控,以三年的时间轴来看,这些泡沫坚持不了多久。等到腐败的ICO项目烂掉,完善的法律法规出来,更好的项目才能展现。而不是现在这样,为了圈钱而无所不用其极。

    我坚信区块链技术一定会发展的越来越好,基于区块链的落地应用也越来越多,但不是现在那些xx链的垃圾项目……

ETP(熵)币在Ubuntu下的挖矿教程

本教程所用环境
* 机器:普通电脑 ThinkPad E470c
* 系统:Ubuntu 16.04 LTS
步骤
  • 下载元界钱包
    • 官方博客有一篇元界(Metaverse)安装与使用手册,这里面涵盖了Windows,MacOSX,Linux系统下钱包下载,安装,使用的详细说明,可能在一些细节与实际不同,摸索一下就会掌握,如有问题,欢迎在评论下留言,或者直接联系我。
  • 下载挖矿软件
    1. 英语过关的请直接看这篇文章Ethereum GPU Mining on Linux How-To,这里有如何下载以太币挖矿软件和显卡驱动。建议:最好结合我下面的一起操作 🙂 。
    2. 我结合自己的实践来大概说明一下:
      • 用以下命令增加挖矿软件安装包的源:
      sudo apt-get install software-properties-common
      sudo add-apt-repository ppa:ethereum/ethereum
      sudo apt-get update
      

      如果是在Debian 8(在Ubuntu上你可以跳过此步骤)上你需要使用以下命令替换源名称:

      sudo sed 's/jessie/vivid/' -i /etc/apt/sources.list.d/ethereum-*.list
      sudo apt-get update
      
      • 安装ethereum, ethminer 和 geth:
      sudo apt-get install ethereum ethminer geth
      

      geth好像是用来生成以太币钱包地址的,对于我们将要挖ETP来说,应该没有用处。因为我们在安装好元界钱包,注册登录后会有ETP的地址。

      • 安装显卡驱动:
        首先,需要知道自己电脑的显卡型号,然后去官方下载对应的驱动软件。比如我的显卡是NVIDIA,电脑系统是Linux(Ubuntu 16.04 LTS)64位,使用的是GeForce 920。到N卡驱动官方网站搜索下载自己需要的驱动。

      然后,安装显卡驱动所需要的依赖:

      sudo apt-get install linux-headers-amd64 build-essential
      

      linux-headers-amd64 这个包好像已经废弃了,不过不影响后续安装。

      最后,安装驱动。显卡驱动安装必须在Linux文本模式,所以:

      第一步,Ctrl+Alt+F1切换到tty1,使用命令sudo service lightdm stop关闭 X-Window.

      第二步,给下载的驱动增加执行权限,然后运行(注:请先看完以下内容在运行).

      chmod +x NVIDIA-Linux-x86_64-367.35.run
      sudo ./NVIDIA-Linux-x86_64-367.35.run
      

      第三步,安装完成后,重新启动X-Windowsudo service lightdm start,然后Ctrl+Alt+F7进入图形界面;

      我在安装完成后遇到一个坑,在图形模式下,登录界面输入密码后依然跳转回登陆界面,无限循环。经过搜索,用以下方法重新安装解决:

      sudo ./NVIDIA.run -no-x-check -no-nouveau-check -no-opengl-files
      -no-x-check:安装驱动时关闭X服务
      -no-nouveau-check:安装驱动时禁用nouveau
      -no-opengl-files:只安装驱动文件,不安装OpenGL文件
      

      这样再reboot,就不会出现循环登录的问题。

      如果没有解决请参考这篇blog.

    3. 寻找矿池挖矿。

      我使用的是火池,挖矿命令:ethminer -F http://get.etp.huopool.com:8888/MEEihkdp6w7JKVA6hyKVGU9FomAV4G7jYP -G --farm-recheck 200

      由于我用的是个人电脑,所以算力很低 🙂 ,仅为了试验一下而已,下面是挖矿和矿池收益截图:
      挖矿图
      收益图

总结
  • 以上内容如果对你有帮助且你还有闲余的ETP的话,可以对我进行打赏
    我的ETP地址:MEEihkdp6w7JKVA6hyKVGU9FomAV4G7jYP
    我的博客地址:http://blog.blianb.com

比特币(bitcoin)的几种获取方法

  • 背景

现在比特币(bitcoin)的名头是越来越响,大街小巷,无人不知,价格也是越炒越高,我知道它也是很晚了,在二〇一三初的时候,当时价格是一千多,现在(二〇一七)已经翻了20多倍了。

  • 比特币的简介

详见维基百科,目前来说,比特币还处在投机,炒作之声中,但如果你要问,它会不会消失?我能肯定的说,它不会消失,因为它与不法交易息息相关,不法交易涵盖太多东西,这些东西就像人性的阴暗面,永远不会完全消失,只能说比特币可能会被一个新数字货币取代,而且这个数字货币有更强的安全性、匿名性和更广的接受程度。现在还没有那一种数字货币有这种趋势。

  • 获取比特币的几种方式
  1. 挖矿,中本聪(比特币创作者)把通过消耗CPU的电力和时间来产生比特币,比喻成金矿消耗资源将黄金注入经济。当前,挖矿对于普通人来说,已经没有任何可行性,只适用于专业矿工。
  2. 到交易平台进行交易,注册账号,充值人民币,购买比特币。现在交易平台很多,但要选择有一定年限和名气的平台,有些平台会有随时跑路的风险,另外,任何平台都有安全风险,我就经历过MT.Gox平台比特币被hacker盗币而倒闭的事件。
  3. 通过一些网站免费获取比特币,比如:

a. 浏览网站btcclicks上的广告,当然,你需要先注册一个账号,然后点击Surf Ads按钮到广告列表,每个广告都标明了广告时长和你能获得的比特币数量,当你积累到0.1mBTC时就可以提到自己的私人地址了。PS:此网站可能需要自备梯子才能浏览广告:)
b. 定时领取网站freebitcoin上的比特币,当然你也需要注册一个此网站的账号,然后每小时可以领取一定数量的比特币,当你积累到0.3mBTC时就可以提到自己的私人地址了。

以上两种方法,都是我亲测有效的,如果以后发现新的方法,会更新在这里。如果你有别的方法,也可以写在评论区哟,好东西需要大家分享呀!