独书先生 Menu

微信自动定时发送消息python

Step1: 使用pip安装依赖包:

pip install wxpy
pip install requests

Step2: 编写sentWechatMessage.py文件

from __future__ import unicode_literals
from threading import Timer
from wxpy import *
import requests
import random
bot = Bot()
# linux执行登陆请调用下面的这句
#bot = Bot(console_qr=2,cache_path="botoo.pkl")
def get_news():

    """获取金山词霸每日一句,英文和翻译"""
    url = "http://open.iciba.com/dsapi/"
    r = requests.get(url)
    content = r.json()['content']
    note = r.json()['note']
    return content, note

def send_news():
    try:
        contents = get_news()
        # 你朋友的微信名称,不是备注,也不是微信帐号。
        my_friend = bot.friends().search('A LUCKY MOMENT')[0]
        my_friend.send(contents[0])
        my_friend.send(contents[1])
        my_friend.send(u"哈哈哈哈哈")
        # 每86400秒(1天),发送1次
        t = Timer(10, send_news)
        # 为了防止时间太固定,于是决定对其加上随机数
        # ran_int = random.randint(0,100)
        # t = Timer(86400+ran_int,send_news)

        t.start()
    except:

        # 你的微信名称,不是微信帐号。
        my_friend = bot.friends().search('@润泽@')[0]
        my_friend.send(u"今天消息发送失败了")

if __name__ == "__main__":
    send_news()

Step3: 执行py文件

python sentWechatMessage.py

参考自https://blog.csdn.net/qq_29027865/article/details/81488654,感谢!

npm –save和–save–dev 的区别

npm安装npm包: npm install jquery –save npm安装包到测试环境后缀用加–save-dev,仅生产环境用–save: npm install expose-loader –save-dev –save会把包安装在局部目录的名字和版本号存到package.json中,利于项目分享后,其他人也能快速通过npm install安装你的开发依赖,快速运行项目 npm install X:

  • 会把X包安装到node_modules目录中
  • 不会修改package.json
  • 之后运行npm install命令时,不会自动安装X

npm install X –save:

  • 会把X包安装到node_modules目录中
  • 会在package.json的dependencies属性下添加X
  • 之后运行npm install命令时,会自动安装X到node_modules目录中
  • 之后运行npm install –production或者注明NODE_ENV变量值为production时,会自动安装msbuild到node_modules目录中

npm install X –save-dev:

  • 会把X包安装到node_modules目录中
  • 会在package.json的devDependencies属性下添加X
  • 之后运行npm install命令时,会自动安装X到node_modules目录中
  • 之后运行npm install –production或者注明NODE_ENV变量值为production时,不会自动安装X到node_modules目录中

使用原则: 运行时需要用到的包使用–save,否则使用–save-dev。

js颜色改变深浅 判断浅色自动加深

需求

工作中的需求,动态获取页面中的一个颜色值,应用到另一个元素的背景上,这样保持页面元素的颜色搭配比较统一。

难点

颜色值可以用户任意定义的,但是应用元素的文字字体颜色是固定白色的,这样如果用户定义的是浅色,那么应用元素的背景设置为浅色这个元素的文字就会看不清楚,如下

文字内容

方案

为了白色文字可以看清楚,考虑把浅色背景统一加深处理,已是深色不处理
Continue reading…

Webpack采坑记录 (一)

背景

本系列文章记录在使用webpack中遇到的坑点,包含网友的解决方案,以及个性化的配置,仅用作参考。

Tips: 据我所知,webpack各个版本与其他不同版本的npm包搭配不同,实际采用的配置也不同,所以所有的设置仅针对个人开发环境,本文会尽量提供详细的开发配置,力争做到充分实践、上手即用,降低学习成本。

正文从这里开始

最近项目采用vue-cli 2 + webpack 3的开发环境,新版本的vue脚手架和webpack配置已有诸多不同,不在本文的讨论范围,往谅解。
Continue reading…

前端模块化总结 CommonJS/AMD/UMD/ES6

Function 时代

JSP项目中,直接在网页上添加一个script,jQuery写交互逻辑

优点:简单快速搭建demo

缺点:混乱,污染全局

例子一:

jQuery:

$(function(){

    // do something

});

或者

$(document).ready(function(){

    //do something

})

例子二:

JS:

document.ready(function () {

    alert('im document.ready');

});

window.onload = function () {

    alert('im window.onload');

};

 

闭包时代

用立即执行函数包裹作用域,

优点:可以防止全局污染;

缺点:变量常驻内存会消耗内存

 
例子一:

(function(){

    //Coding…

})()

例子二:

outObj  作为参数传递过去,不用每个语句都去找outObj,提高了效率

(function(outObj){

    var  a = 1;

    var  obj ={ b:2};

    window.obj = obj;

    return obj;

})( outObj)

 

例子三:常驻内存

function f1(){

    var n =9;

    nAdd=function(){

        n=n+1;

    }

    function f2(){

        console.log(n);

    }

    return f2;

}

var result=f1();

result(); //9

nAdd();

result();//10

注意点:全局变量不用了记得置为null,方便垃圾回收

 

 

模块化时代

CommonJS, AMD, CMD, UMD, ES6 规范(CMD已经淘汰)

 

CommonJS 规范

基本知识:
– require : 导入模块
– module.exports 或exports :导出模块

特点:
同步加载,依赖通过每个require一个个导入

例:

文件名: foo.js

// 依赖
var $ = require('jquery');

// 方法
function myFunc(){};
// 暴露公共方法(一个)
module.exports = myFunc;

注意点:

  1. exports 是对 module.exports 的引用
  2. 一个文件不能写多个module.exports ,如果写多个,对外暴露的接口是最后一个module.exports
  3. 模块如果没有指定使用module.exports 或者exports 对外暴露接口时,在其他文件就引用该模块,得到的是一个空对象{}

案列:

example1.js 文件

// 定义有依赖的模块

//CommonJS
var example2Obj = require('./example2');
example2Obj.sayHello();
module.exports = example2Obj;

 

example2.js 文件

//没有依赖的js
CommonJS
var me = {
        sayHello:function(){
        console.log('我是example2 in CommonJS!');
    }
};
module.exports = me;

main.js

//CommonJS / AMD
var example1Obj = require('./assets/example1');

console.log("example1 in main",example1Obj)

AMD 规范

基本知识:

  • define 或者 require():导入模块

  • return:导出模块

实际上也是一个闭包

define([module1,module2],function(){

    return {};

});

特点:异步加载,不阻塞页面的加载,通过define导入多个模块,

案例:

example1.js 文件

//AMD

define([
'./example2'
],function(example2Obj){
    example2Obj.sayHello();
    return example2Obj;
});

example2.js 文件

//AMD
define([
],function(){
    var we = {};
    return {
        sayHello:function(){
            console.log('我是example2 in AMD!');
        }
    };
});

main.js同CommonJS

UMD 规范

结合AMD + CommonJS的写法

(demo不生效,不举例了,有实验成功的童鞋分享下)

(function (root, factory) {

    if (typeof define === 'function' && define.amd) {

    // AMD

    define(['b'], factory);

    } else if (typeof module === 'object' && module.exports) {

    // CommonJS

    module.exports = factory(require('b'));

} else {

    // Browser globals

    root.returnExports = factory(root.b);

    }

}(this, function (b) {

    //use b in some fashion.

return {};

}));

ES6 规范

基本知识:
– import  导入
– export 或者 export default 导出

注意点:一个文件即模块中只能存在一个export default语句,export可以多个

案例:
example1.js 文件

//ES6
//名字任意
import ex2 from "./example2"
let ex1 = "ex1 ES6!!"
export {ex1,ex2}

example2.js 文件

//ES6
const str = "First ES6";
let obj = {
    func:() => {
        console.log("I am in ES6")
    }
}
//只能一个default
export default{
    str,
    obj
}

main.js

//ES6
import {ex1,ex2} from './assets/example1'
console.log("ex1:",ex1,"ex2:",ex2)

demo源代码见:https://github.com/Dushusir/js-module-demo

演示环境:vue + webpack

  1. 安装node
npm install -g vue-cli
vue init webpack myDemo
  1. cd myDemo

  2. npm run dev

  3. 去除eslint检查,防止对 “;” 报错:config/index.js中

module.exports = {

dev: {

//其他设置

useEslint: false,

参考:https://webpack.toobug.net/zh-cn/chapter2/commonjs.html ,感谢!

21天鲲鹏新青年计划第二期 技术管理该如何做

大家好,我是一名前端工程师,作为小组长带领3人左右一起开发,是一个半技术半管理的职能。个人从工作中发现了自己的不足,以及要改进的方向跟大家分享。

 

  1. 做好自己

首先做好自己的第一位的,从程序员角度,尽量问题考虑全面,考虑扩展性,代码多加注释,思考更高性能的解决思路,做好代码优化,把开发文档整理好等,做好自己的开发工作,积极完成任务,也是做一个表率,不然没法一起合作,更没办法管理。
Continue reading…

uglifyjs 快速批量压缩js文件 bat一键压缩混淆

背景

当前最好用的压缩混淆js插件:uglifyjs。

步骤

  1. 安装node + npm
  2. 打开cmd窗口,全局安装uglifyjs : npm install -g uglify-js

  3. 新建一个txt,再新建一个空白文件夹js, 把下方D:\tools\compresser_tool\js改成你自己的空白文件夹(js)目录,用于存放将要压缩的js文件
    Continue reading…

编写一个函数,将除最后四个字符之外的所有字符都改为’#’

codewars在线编程练习总结:信用卡数组隐藏

问题:编写一个函数maskify,它将除最后四个字符之外的所有字符都改为’#’。

列子:

maskify("4556364607935616") == "############5616"
maskify( "64607935616") == "#######5616"
maskify( "1") == "1"
maskify( "") == ""
maskify("Skippy") == "##ippy"
maskify("Nananananananananananananananana Batman!") == "####################################man!"

Continue reading…

js实现 Excel通配符比较两个字符串

需求分析:

a 与 b比较(a和b可为字符串或数字),其中b的内容比较丰富,开头可含比较符(>, >=, <, <=, =),任意位置可含通配符(Excel规则:   ?  ~  ~?), 返回Boolean(true or false)

通配符规则:

?(问号)

任何一个字符
例如,sm?th 可找到“smith”和“smyth”
*(星号) 任意的数量字符
例如,*east 可找到“Northeast”和“Southeast”
~(波形符)后跟 ?、* 或 ~

问号、星号或波形符
例如,fy06~? 可找到“fy06?”

通配符的使用详细参照Excel官网
Continue reading…