2018年6月

注:原本想发表在知乎,但我发现还是不去献丑了。我觉得还是发在V站比较好。

大家好,我是艾瑞克,我目前在美国圣地亚哥,主业是给国内的朋友代购金坷垃,副业是顺便帮人写写网站。

我今天分享一下在美国做项(外)目(包)的一点体会。
我是转行的,从生物转行而来,top2毕业,现在龟缩在美国加州一个偏远小城,给人写网站为生。

我学了2年半PHP,最近半年也写了不少nodejs。
怎么说呢,美国PHP生态环境和国内完全不一样,其实这属于整个经济环境的不同。

简单对比一下吧:

国内的情况呢,目前是垄断平台的触角深入一切领域,就没有BAT不掺和一脚的地方,对吧?这个大家都同意的吧?

美国呢,相对克制一点。
前段时间知乎上还有人批评Facebook,说Facebook曾经被视为对所有人的威胁,似乎FB能做一切,但现在FB还是在卖广告过日子。
Google也一样,超过90%收入还是广告,远远不如国内巨头们的收入来源多样化。

好,这样的生态之下,就来说说美国超级巨头Amazon。

我在圣地亚哥,离墨西哥1小时车程,离西雅图隔着好几小时的飞机,其实感受不到特别多的Amazon的影响。
我两口子统共也没在Amazon上买过多少东西。

我找工作这半年来,招PHP的,全都是各类小公司,而且都是外包公司,他们在干啥呢?
1、做公司网站,主要是展示为主
2、做小型电商网站

是的,你没看错,美国这里存在大量小公司,都是有一个自己的小网站,卖点自己的产品,产品数量可能都不到100个,甚至我目前做的一个项目,只有6个产品(服务)。

于是基本上这类小公司,几乎不用框架,而都是用一个现成的程序,例如opencart,magento,shopify,WordPress(woocommerce),三下五去二,搞成一个小网站,剩下的,就是找一个Web Designer,把网站做得漂漂亮亮,就开始赚钱了。

所以美国这里的小网站,往往做的很漂亮,但实质上很简单。

做完之后呢,要投入大量的时间和金钱做推广,一般都是SEO,Facebook Page,Twitter和Instragram以及Youtube这样的社交平台上推广,找粉丝了。
再就是各种邮件营销了。

这套路就这么多,不管怎么搞,都是这个套路。

所以这就是我想自己写一个电商程序的出发点吧。

那么,为什么美国这么多小电子商务网站,而不是类似国内的超级平台化呢?就连各种名牌,都要去天猫上开旗舰店。

首先是技术手段的原因,这就是支付了。美国信用卡发达,所以有一张卡就够用了,只要能刷卡,就可以开店了,所以有很多很多的payment gateway,提供这样的刷卡服务。

其实是法律原因。如果你遇到欺诈,你显然可以要求信用卡公司拒付这笔钱,你可以说,这不是我支付的,或者你直接说,我拒绝支付这笔钱,通常信用卡公司都会给你免除这笔钱。相反,接受信用卡的商家,却要时刻防范着你,这次刷卡的人是不是真的是你!

以上两点,在国内怕是不行的,一方面国内没那么多的支付平台,二方面,你的支付宝被盗刷了,马云爸爸是不管的,消费者权益的保护水平,不是一个级别。

第三,实体经济发达。Shopify靠着给小公司建小型商城,现在估值100亿美元了。那么请问,如果实体经济不发达,shopify有这么多客户么?大量小公司能够生存,而不是仅仅几个巨头在天天上头条。对比起来,美国这经济活力和健康度,还是相当可以的。国内的小生意都是大头支出都在房租了吧。

不管怎么说,这个局势目前不错,希望美国能继续维持下去。

Model类或者ActiveRecord类,里面会有一个rules,规定了所有的attribute的限制条件。
然后呢,万一生成的时候,把id也写到rules里,而且是['id', required]
好了,就傻逼了,保存不了,而且不报错。

而且,更要命的是,transaction还不回滚!!!

可以说,用gii生成的代码问题多多,都遇到两回因为gii的原因导致的问题了。

2018年6月8日更新:
这是由于如果$user->save()失败,会返回false,但不抛出异常,应该用if判断一下,如果返回false,则手动抛出异常。

symlink(): Cannot create symlink, error code(1314)

这个error属于Windows系统权限问题。

怎么解决呢?
https://superuser.com/questions/124679/how-do-i-create-a-link-in-windows-7-home-premium-as-a-regular-user

Creation of symbolic links requires the SeCreateSymbolicLinkPrivilege (“Create symbolic links”), which is granted only to administrators by default (but you can change that using security policy).

To change the policies:
 - Launch secpol.msc via Start or Start → Run.
 - Open Security Settings → Local Policies → User Rights Assignment.
 - In the list, find the "Create symbolic links" item, which represents SeCreateSymbolicLinkPrivilege.
 - Double-click on the item and add yourself (比如我,就是"guiyumin") to the list.
 - The changes will apply when you log out and log in again.

Yii框架其实是一堆零件的集合而已,那么结合其他的零件,就可以组建成一个完整的web app,于是就有了yii2-app-basicyii2-app-advanced这2个模板,而且正在搞yiisoft/yii2-app这个yii 2.1版本的模板。

这些都是模板是有问题的,尤其是不适用于某个特定目的,比如做一个电商网站。所以我是不是可以在这基础之上,尝试这搞一个的模板,专注于电子商务?

考虑要改进的地方如下:

  • 要和前端资源解耦,以便更方便的利用npm的繁荣生态;
  • 充分利用JavaScript的生态,毕竟JavaScript is eating the world
  • 充分利用composer的生态,不能仅仅着眼于和yii融合很紧密的library
  • 充分利用module,把各种常用便捷云服务都整合进来,包括但不限于blogpaymentemail(mailgun, mailchimp之类的邮件通知或邮件激活)sns(短信)wechataws s3
  • adminlte等后台管理系统,甚至是ant design pro这样的专门的后台管理系统
  • 利用各种快速开发的技术,敏捷开发优先,更好满足电子商务的特点,例如打折促销等活动
  • 插件开发商业化,学学人家wordpress
  • web design商业化,可以提供几套常见的设计,例如淘宝,京东,ebay,Amazon等
  • 接入包括Google API在内的多种api,来获取信息,判断用户profile等
  • 待续。。。。

  • Stripe有代码,可以照抄,但是,那个代码是手写Form,没有用到Yii2里的ActiveForm,因此就没有csrf

    In case ActiveForm is used, token is added automatically.

  • 所以需要手动添加一个input type="hidden",类似这样:
  • 如果不加这个csrf,会总是返回 Bad Request (#400) Unable to verify your data submission.

- 阅读剩余部分 -