分类目录归档:Uncategorized

跨平台解决方案

桌面端

  • electron:代表作在http://electron.atom.io/apps/,包含atom, visual studio code, bearychat,Slack等,不支持XP系统
  • NW:支持xp系统,官方网站https://nwjs.io/,接口上大体与electron相仿(一位中国作者后台主要负责electron)。
  • Hex:代表作有道词典。官方网站http://hex.youdao.com/zh-cn/index.html

手机端

  • PWA: 相关文章https://github.com/sundway/awesome-pwa,代表作有aliexpress等,消息推送等功能有待验证。
  • react native: 原生应用,代表作http://facebook.github.io/react-native/(有百度facebook,百度百科,QQ),以及http://reactnative.cn/cases.html
  • weex:原生应用,代表作天猫,淘宝,钉钉优酷等,支持安卓,IOS,web三个平台
  • cordova: http://cordova.apache.org/
  • 微信小程序:功能受限

总结

  • 开发桌面应用的话,优先考虑electron,除非需要支持xp系统
  • 开发移动应用,学习成本依次为 PWA < cordava < weex < react native。其中PWA无需熟悉原生应用编程技术,cordava需要少量,而weex与react需要较多。从性能和能实现的功能上来说则顺序相反。
  • weex,react与微信小程序的开发模式都是一样的,都是将html,css代码转换为原生应用。PWA和cordava的开发模式和web差不多,差别在于PWA通过谷歌公司实现推送等原生应用功能,而cordava通过插件实现。
  • weex,react,cordava都需要通过应用渠道进行分发,而PWA需要安装谷歌浏览器57以上版本,微信小程序功能受限。

关于研发管理和绩效考核

BAT与一些创业公司是如何进行研发管理和绩效考核的?

百度、腾讯、阿里都是如何做绩效管理的?

如何制定好绩效管理体系?

英特尔和 Google 的 OKR 制度与我们一般所说的 KPI 有什么不同?

揭秘:谷歌是如何考核员工的?看看他们的OKR制度

BAT的工程师内部晋升和绩效考核是怎样的?

阿里巴巴的绩效考核—–271

百度、腾讯和阿里内部的级别和薪资待遇是什么样的?

配置nginx使用letsencrypt免费https证书

https://letsencrypt.org/

生成证书

certbot certonly --webroot \
-w /data/web/c4ys/frontend/web/ -d c4ys.com -d www.c4ys.com \
-w /data/web/c4ys/mobile/web/ -d m.c4ys.com

修改nginx配置

listen       443 ssl;
ssl                  on;
ssl_certificate /etc/letsencrypt/live/www.c4ys.com/fullchain.pem;     
ssl_certificate_key /etc/letsencrypt/live/www.c4ys.com/privkey.pem;
ssl_session_cache    shared:SSL:1m;
ssl_session_timeout  5m;
ssl_ciphers  HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers  on;
error_page 497  https://$host$uri?$args;

自动更新证书

0 3 */10 * * certbot renew –quiet
0 3 */10 * * service nginx restart

亚马逊联盟API上手指南 – Amazon.cn Product Advertising API quick start

中文注册页面 : https://associates.amazon.cn/

英文注册页面: https://associates.amazon.com/

如何申请美国Amazon联盟注册教程

亚马逊联盟API上手指南 – Amazon.cn Product Advertising API quick start

python-amazon-product-api

Docs: Product Advertising API

Signed Requests Helper

scratchpad

mysql随机字符串

drop function if exists rand_string;  
create function rand_string(str_length tinyint unsigned, str_type tinyint unsigned) returns varchar(255)
begin
    -- Function   : rand_string
    -- Author     : reymondtu#opencfg.com
    -- Date       : 2011/03/27
    -- Params     : str_length int unsigned 
    --                  The random string length of random string
    --              str_type   int unsigned
    --                  The random string type
    --                      1.0-9
    --                      2.a-z
    --                      3.A-Z
    --                      4.a-zA-Z
    --                      5.0-9a-zA-Z
    --
    -- Example    :
    --
    -- mysql> select rand_string(32,5) from dual;
    -- +----------------------------------+
    -- | rand_string(32,5)                |
    -- +----------------------------------+
    -- | HbPBz4DWSAiJNLt4SgExHVwQI34bI6mt |
    -- +----------------------------------+
    -- 1 row in set

    declare counter int unsigned default 0;
    declare const_chars varchar(64) default '0123456789';
    declare result varchar(255) default '';
 
    if str_type = 1 then
        set const_chars = '0123456789';
    elseif str_type = 2 then
        set const_chars = 'abcdefghijklmnopqrstuvwxyz';
    elseif str_type = 3 then
        set const_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    elseif str_type = 4 then
        set const_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    elseif str_type = 5 then
        set const_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    else
        set const_chars = '0123456789';
    end if;
 
    while counter < str_length do  
        set result = concat(result,substr(const_chars,ceil(rand()*(length(const_chars)-1)),1));
    set counter = counter + 1;
    end while;

    return result;
end