find . -type d -name ".svn"|xargs rm -rf;
find . -type f -name "*.a"|xargs svn add;
find . -type d -name ".svn" -delete
grep "search something" -r * --include=*.php
统计某文件个数 ll l grep xxx l wc -l
https://github.com/nvbn/thefuck
while read -d " "; do sl; done
孩子不到 1 岁的时教会按空格看火车,按了一年多了
命令行的艺术https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
http://www.commandlinefu.com/commands/browse/sort-by-votes
https://billie66.github.io/TLCL/book/index.html
怎么没有人说 sl 这个命令, 具我的研究它可以用来测试网络是否稳定
如果稳定的话会有一列火车帽着白烟从屏幕右边向左边疾驰而过
如果不稳定火车就会一卡一卡的走不动
windows查看WiFi密码
cmd 运行
for /f “skip=9 tokens=1,2 delims=:” %i in (‘netsh wlan show profiles’) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
查看Linux版本
cat /etc/redhat-release#或者
cat /etc/issue
linux查看端口占用
netstat -anl | grep “80” ;#1080 8080也是会被筛选出来
lsof -i:80
linux查看程序占用的端口
ps -ef | grep nginx
linux安装docker
curl -s https://get.docker.com/ | sudo sh
linux查看目录中有多少文件
ls -lR|grep “^-“|wc -l
Python启动http服务器(传文件)
python -m SimpleHTTPServer
linux显示命令执行的具体时间精确到秒
export HISTTIMEFORMAT=’%F %T ‘
history | more
linux DD 显示进度
先放入后台,然后每5秒显示一下进度
sudo dd if= xxx.img of=/dev/mmcblk1 bs=10MB &
while (ps auxww |grep “ dd “ |grep -v grep |awk ‘{print $2}’ |while read pid; do kill -USR1 $pid; done) ; do sleep 5; done
命令行测速 (python+speedtest)
sudo apt-get install python-pip
sudo pip install speedtest-cli
另一种
wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
## mplayer 后台播放
mplayer * < /dev/null > /dev/null 2>1&
block一些恶意ip
wget https://teddysun.com/wp-content/uploads/2013/05/block.sh
chmod +x block.sh
./block.sh
最常用的命令排行https://vsxen.github.io/2016/12/02/short-useful-command/
history | awk ‘{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]” “ CMD[ a ]/count*100 “% “ a }’ | grep -v “./“ | column -c3 -s “ “ -t |sort -nr | nl | head -n10
命令行播放器 mpv.io
npm install <name> --save #save的作用是将信息写入package.json中
npm init #会引导你创建一个package.json文件,包括名称、版本、作者这些信息等
npm update <name>#更新
npm ls #列出当前安装的了所有包
npm uninstall <name>
npm rm <name> #卸载某一个包
npm help 帮助,如果要单独查看install命令的帮助,可以使用的npm help
###ssh免密码登录服务器
scp id_rsa.pubroot@ip:~/.ssh/
#The authenticity of host '192.168.1.3(192.168.1.3)' can't be established. ...
#输入yes
#输入密码
cat id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys #设置权限
chmod 700 -R .ssh
ssh root@ip
如果不出错的话就登录成功了。
ssh-keygen -t rsa -b 4096 -C "youremail"#生成公钥 不带参数也可以
cat ~/.ssh/id_rsa#复制结果
#打开github,点击头像->setting ->侧边栏选择”SSH Keys" 接着粘贴key,点击”Add key”按钮,如果没有出错就添加成功了。
ssh -T git@github.com#测试连接
The authenticity of host 'github.com...(yes/no)?#输入yes
Hi 你的用户名...access#这就是添加成功了
git remote add origin 你的远程地址 #ssh 不要密码 https需要 ,origin 可以自己取名
git remote -v#查看添加的远程信息
git push -u origin master#提交到远程仓库
git feach origin #取回远程分支的文件
git pull origin master#取回远程分支的文件
###Nginx配置Let'sEncrypt https证书 wget https://dl.eff.org/certbot-auto#下载 chmod a+x ./certbot-auto#加权限 ./certbot-auto -n#安装依赖 ./certbot-auto certonly --standalone --email [email protected] -d www.test.site #单域名单证书 ./certbot-auto certonly --standalone --email [email protected] -d www.test.site -d blog.test.site#多域名单证书 ls /etc/letsencrypt/live/ 如果需要备份到本地可以使用scp命令 scp -r root@ip:/etc/letsencrypt /Users/test 在crontab加入如下规则0 3 */5 * * /root/certbot-auto renew这样每五天就会执行一次续期操作 ###php nginx windows
让php能够与nginx结合。找到
;cgi.fix_pathinfo=1
我们去掉这里的封号。
cgi.fix_pathinfo=1
### ngrok 服务可以分配给你一个域名让你本地的web项目提供给外网访问
https://vsxen.github.io/2016/10/18/ssh-with-ngrok/ 用ngrok刺破内网,开启本地调试
server_addr: "tunnel.qydev.com:4443"#可以改成别的网站
trust_host_root_certs: falsetunnels
tunnels:
client:
auth: "user:password"
proto:
https: 8080
ssh:
proto:
tcp: 22
test.tunnel.qydev.com:
proto:
http: 4000
weixin2:
proto:
http: 80
执行./ngrok -config ngrok.cfg list可以看到
weixin2
client
ssh
test.tunnel.qydev.com
已经成功添加了四个隧道
运行./ngrok -config ngrok.cfg start ssh client ,可以开启指定的端口隧道。
配置文件每一项冒号后面必须有空格,必须有空格,必须有空格
###天猫双12爬虫,附266万活动商品数据。 ###QQ空间爬虫(日志、说说、个人信息) ###新浪微博爬虫(Scrapy、Redis) ###图像识别学习之路上的例子 ###将网页转换为 PDF https://github.com/amir20/phantomjs-node https://github.com/brenden/node-webshot // demo var webshot = require('webshot');
webshot('google.com', 'google.png', function(err) { // screenshot now saved to google.png }); composer require barryvdh/laravel-dompdf:^0.6.0 ###如何用爬虫抓取京东商品评价
#endocing:utf-8
from bs4 import BeautifulSoup
import re,requests,json
s = requests.session()
url = 'https://club.jd.com/comment/productPageComments.action'
data = {
'callback':'fetchJSON_comment98vv61',
'productId':'3888284',
'score':0,
'sortType':5,
'pageSize':10,
'isShadowSku':0,
'page':0
}
while True:
t = s.get(url,params = data).text
try:
t = re.search(r'(?<=fetchJSON_comment98vv61\().*(?=\);)',t).group(0)
except Exception as e:
break
j = json.loads(t)
commentSummary = j['comments']
for comment in commentSummary:
c_content = comment['content']
c_time = comment['referenceTime']
c_name = comment['nickname']
c_client = comment['userClientShow']
print('{} {} {}\n{}\n'.format(c_name,c_time,c_client,c_content))
data['page'] += 1
with requests.session() as s:
url = 'https://club.jd.com/comment/productPageComments.action'
data = {
'productId':'3888284',
'score':0,
'sortType':5,
'pageSize':10,
'isShadowSku':0,
'page':0
}
r = s.get(url, params = data)
r.json()
###女朋友的微博情绪监控 https://github.com/DIYgod/Weibo2RSS 以 RSS 形式输出消极情绪的微博 https://api.prprpr.me/emotion?text=%E6%88%91%E4%BB%8A%E5%A4%A9%E5%BE%88%E5%BC%80%E5%BF%83 "以讯飞分词接口和大连理工的情感词汇本体库为基础,分析一句话的情绪值"
https://api.prprpr.me/emotion/?text=%E6%88%91%E4%BB%8A%E5%A4%A9%E5%BE%88%E5%BC%80%E5%BF%83
{"code":1,"emotion":5,"words":["我","今天","很","开心"]}
https://api.prprpr.me/emotion/?text=%E6%88%91%E4%BB%8A%E5%A4%A9%E5%BE%88%E4%B8%8D%E5%BC%80%E5%BF%83
{"code":1,"emotion":5,"words":["我","今天","很","不","开心"]} https://github.com/DIYgod/Text2Emotion 分析一句话的情绪值 使用RSS订阅喜欢的微博博主 & 女朋友的微博情绪监控 Demo:https://api.prprpr.me/weibo/rss/3306934123 https://api.prprpr.me/weibo/negative/3306934123 获取uid:进入博主的微博主页,控制台执行
/uid=(\d+)/. exec(document.querySelector('.opt_box .btn_bed').getAttribute('action-data'))[1] 使用方法及介绍:
https://www.anotherhome.net/2920 ###老司机教你下载tumblr上视频和图片的正确姿势 https://link.zhihu.com/?target=https%3A//github.com/xuanhun/tumblr-crawler ###Python时间处理完全手册
print time.strftime('%Y-%m-%d %H:%M:%S')
# 获取当前日期
today = datetime.date.today()
print today.strftime('%Y-%m-%d')
# Out: '2016-12-01' # 获取当前日期
now = datetime.datetime.now()
print now.strftime('%Y-%m-%d %H:%M:%S')
# Out: '2016-12-01 16:14:22' # 获取当前日期时间
struct_time = time.strptime('161201 16:14:22', '%y%m%d %H:%M:%S')
# struct_time 为一个时间元组对象
print time.strftime('%Y-%m-%d %H:%M:%S', struct_time)
# Out: '2016-12-01 16:14:22'
dt = datetime.datetime.strptime('161201 16:14:22', '%y%m%d %H:%M:%S')
# dt 为 datetime.datetime对象 # 通过调用 timetuple()方法将datetime.datetime对象转化为时间元组
print dt.strftime('%Y-%m-%d %H:%M:%S')
# Out: '2016-12-01 16:14:22'
scipy‑0.18.1‑cp35‑cp35m‑win32.whl
完整代码:https://github.com/lzjun567
# -*- coding:utf-8 -*-
import codecs
import csv
import re
import jieba.analyse
import matplotlib.pyplot as plt
import requests
from scipy.misc import imread
from wordcloud import WordCloud
__author__ = 'liuzhijun'
cookies = {
"ALF": "xxxx",
"SCF": "xxxxxx.",
"SUBP": "xxxxx",
"SUB": "xxxx",
"SUHB": "xxx-", "xx": "xx", "_T_WM": "xxx",
"gsScrollPos": "", "H5_INDEX": "0_my", "H5_INDEX_TITLE": "xxx",
"M_WEIBOCN_PARAMS": "xxxx"
}
def fetch_weibo():
api = "http://m.weibo.cn/index/my?format=cards&page=%s"
for i in range(1, 102):
response = requests.get(url=api % i, headers={"cookie":"SINAGLOBAL=4399434400256.724.1393582057383; wb_g_upvideo_2717930601=1; wb_publish_fist100_2717930601=1; YF-Ugrow-G0=b02489d329584fca03ad6347fc915997; SCF=ApAKLlfvcDWRTxdyp6K-ECZnIoyDl2tiNXrWLqQNaUqgjgZpc5-t01qsJ4cWHdnJtKnjRSCkq7EuiPfDHNLWsKo.; SUB=_2A251rJsTDeRxGeRJ6lUY8y7Kyz2IHXVW24vbrDV8PUJbmtBeLRmlkW8tlGcpiAe2Gd2hZyD50yuINbe0jA..; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WW1cajqHaL9UWbevdkzPrX95JpX5o2p5NHD95QES02N1Ke7So5pWs4Dqcj.i--RiKyFiKysi--NiK.XiKLsi--Xi-zRiKy2i--ciKn0iK.p; SUHB=079ivAWVI-aQRs; ALF=1519001259; SSOLoginState=1487465283; YF-V5-G0=a9b587b1791ab233f24db4e09dad383c; _s_tentry=login.sina.com.cn; UOR=,,login.sina.com.cn; Apache=6104702277251.093.1487465331053; ULV=1487465331062:420:8:1:6104702277251.093.1487465331053:1487376124957; YF-Page-G0=23b9d9eac864b0d725a27007679967df; tips_2717930601=1"})
data = response.json()[0]
groups = data.get("card_group") or []
for group in groups:
text = group.get("mblog").get("text")
text = text.encode("utf-8")
def cleanring(content):
"""
去掉无用字符
"""
pattern = "<a .*?/a>|<i .*?/i>|转发微博|//:|Repost|,|?|。|、|分享图片"
content = re.sub(pattern, "", content)
return content
text = cleanring(text).strip()
if text:
yield text
def write_csv(texts):
with codecs.open('./weibo2.csv', 'w') as f:
writer = csv.DictWriter(f, fieldnames=["text"])
writer.writeheader()
for text in texts:
writer.writerow({"text": text})
def read_csv():
with codecs.open('./weibo2.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
yield row['text']
def word_segment(texts):
jieba.analyse.set_stop_words("./stopwords.txt")
for text in texts:
tags = jieba.analyse.extract_tags(text, topK=20)
yield " ".join(tags)
def generate_img(texts):
data = " ".join(text for text in texts)
mask_img = imread('./heart-mask2.jpg', flatten=True)
wordcloud = WordCloud(
font_path='msyh.ttc',
background_color='white',
mask=mask_img
).generate(data)
plt.imshow(wordcloud)
plt.axis('off')
plt.savefig('./heart2.jpg', dpi=600)
if __name__ == '__main__':
texts = fetch_weibo()
write_csv(texts)
generate_img(word_segment(read_csv()))
###Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
pip install requests pip install beautifulsoup4 pip install pdfkit $ sudo apt-get install wkhtmltopdf # ubuntu $ sudo yum intsall wkhtmltopdf # centos python crawler.py ###下载各种编程语言文档的网站 http://devdocs.io/ 看云的广场里面有很多技术文档 http://www.kancloud.cn/explore ###开源书籍 《 Python 数据结构》
github 地址: https://github.com/facert/python-data-structure-cn gitbook 在线浏览: https://facert.gitbooks.io/python-data-structure-cn ###PHP Compsoer 使用以及常用的一些 Package ###开源一个爬虫代理框架 github 地址: https://github.com/awolfly9/IPProxyTool ###通过测试公众号模版消息推送,能够实时获知服务器的状态 ###谁成就了微博段子手杜蕾斯 数据展示用 ECharts 做的: http://res.crossincode.com/code/weibo/durex.html https://github.com/zx576/Crossin-practices/tree/master/weibo ###用 Vue 实现了 strml.net 的效果 https://jirengu-inc.github.io/animating-resume/dist/ 源码: https://github.com/jirengu-inc/animating-resume 饥人谷出品:一个会动的简历 strml.net 抄的这个 http://codepen.io/jakealbaugh/full/JoVrdw/ ###2016 年你所在的行业发生了哪些变化分析器 直接围观: https://labs.getweapp.com/ ###微信一键自动拜年脚本 git clone https://github.com/HanSon/vbot.git cd vbot composer install php example/bainian.php https://github.com/vonnyfly/wechat-sendall 网址收藏应用: http://mybookmark.cn/ ###简单的视频下载器,支持 youtube 与 B 站 GitHub releases : https://github.com/sorrowise/viedo_downloader/releases https://github.com/rg3/youtube-dl ###加密的内容是 jquery
$uid = 13922;
$url = 'http://api.expoon.com/XmlKrpano/getCrptyXml/uid/' . $uid;
$data = file_get_contents($url);
$data = substr($data, 2, -2); //去掉不需要的内容
$key = $uid % 10; //得到 key
$data = str_replace('$', $key, $data); //进行替换
$data = base64_decode($data); // base64 解码
var_dump($data);//输出内容
[Artizen.cc]一个独立作品收集站点
在浏览器端无需插件即可多人视频的站https://www.v2ex.com/t/337390#reply25
输入房间名创建房间后只需要将 URL 发给朋友,一键即可加入
比如: https://lawsroom.com/room/ROOM_NAME
GitHub:https://github.com/HFO4/HideByPixel
Demo:https://hide.aoaoao.me/
[把文字写进像素里] 基于像素微调实现的文字隐写术https://www.v2ex.com/t/337138#reply63
PHP 写的一个文字直播,协作编辑的工具https://www.v2ex.com/t/336102#reply19
http://pad.laravel.band/pad/home
GitBook《十大经典排序算法》JavaScript 实现https://www.v2ex.com/t/335773#reply16
https://github.com/hustcc/JS-Sorting-Algorithm GitHook 在线阅读地址:https://sort.hust.cc/
Javascript - 一个支持中文的摩斯密码转换库开源地址在这里:https://github.com/hustcc/xmorse
demo 地址:http://git.hust.cc/xmorse
https://www.v2ex.com/t/334965#reply2
Python requests SSL: CERTIFICATE_VERIFY_FAILED 错误https://www.v2ex.com/t/334435#reply20
requests.packages.urllib3.disable_warnings()
Medoo 中文文档地址:http://lonewolf.oschina.io/medoo/ https://www.v2ex.com/t/333158#reply20
markdown 转换为类似于下面的 html 页面https://www.v2ex.com/t/333132#reply1
微信命令行版本终端 github 地址: https://github.com/liushuchun/wechatcmd
https://github.com/lbbniu/WebWechat https://github.com/Urinx/WeixinBot
pip install git+https://github.com/dabeaz/curio.git
http://res.crossincode.com/other/heart.html https://www.v2ex.com/t/333050#reply88
http://zichi.date/2015/love-on-20150214/
程序员怎样用自己的专业技能给女朋友惊喜https://www.v2ex.com/t/333050#reply88
fork 简历的小工具https://www.v2ex.com/t/333153#reply2 https://github.com/remrain/fork-this-resume
python whl http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
###[最省心的Python版本和第三方库管理——初探Anaconda](https://zhuanlan.zhihu.com/p/25198543)
不过很少有以anaconda入门的教程,给人一种先学Python再学numpy scipy的感觉。其实从一开始就用anaconda能少很多事,不论是版本和库的管理,还是iPython交互的命令行、spyder编辑器,当然我现在最常用的还是jupyter notebook。
#Python列表or元组与csv的转换
csv.reader(file) #读出csv文件
csv.writer(file) #写入csv文件
writer.writerow(data) #写入一行数据
writer.writerows(data) #写入多行数据
#Python字典与csv的转换
csv.DictReader(file) #读出csv文件
csv.DictWriter(file) #写入csv文件
writer.writeheader() #写文件头
writer.writerow(data) #写入一行数据
writer.writerows(data) #写入多行数据
作者:iGuo
链接:https://zhuanlan.zhihu.com/p/21452812
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# -*- coding: utf-8 -*-
import codecs
import csv
import requests
from bs4 import BeautifulSoup
def getHTML(url):
r = requests.get(url)
return r.content
def parseHTML(html):
soup = BeautifulSoup(html,'html.parser')
body = soup.body
company_middle = body.find('div',attrs={'class':'middle'})
company_list_ct = company_middle.find('div',attrs={'class':'list-ct'})
company_list = [] #修改
for company_ul in company_list_ct.find_all('ul',attrs={'class':'company-list'}):
for company_li in company_ul.find_all('li'):
company_url = company_li.a['href']
company_info = company_li.get_text()
company_list.append([company_info.encode('utf-8'),company_url.encode('utf-8')]) #修改
return company_list #修改
def writeCSV(file_name,data_list):
with codecs.open(file_name,'wb') as f:
writer = csv.writer(f)
for data in data_list:
writer.writerow(data)
URL = 'http://www.cninfo.com.cn/cninfo-new/information/companylist'
html = getHTML(URL)
data_list = parseHTML(html) #修改
writeCSV('test.csv',data_list)
r3 = requests.get('http://www.cninfo.com.cn/finalpage/2015-03-13/1200694563.PDF',stream = True) #请求
r3.raw.read() #读取文件
###Python对微信好友进行简单统计分析 https://www.zhihu.com/question/36132174/answer/145997723?group_id=814232716034871296 ###爬虫带你逛知乎
def downloadimage(urllist):
for url in urllist:
ir = s.get(url,headers=HEADERS)
if ir.status_code == 200:
open('images\%s' %(url.split(r'/')[-1]), 'wb').write(ir.content)
https://link.zhihu.com/?target=https%3A//github.com/kimg1234/pachong/
###Shapecollage:超好用的拼图工具 ###天猫商品评论 GitHub https://github.com/cooperxiong/py-crawlers http://www.yunya.pw/?post=5 ###利用相关性进行数字识别
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
df_train = pd.read_csv("../input/train.csv",nrows=2000)
#df_test = pd.read_csv("test.csv")
X_train = df_train.drop("label",axis=1)
X_train_n = [0]*10
for n in range(10):
X_train_n[n] = df_train.loc[df_train.label==n].drop("label",axis=1)
plt.figure(figsize=(12,12))
for i in range(10):
plt.subplot(10,4,i+1)
plt.imshow(X_train_n[i].mean(axis=0).reshape(28,28),interpolation='nearest')
#plt.axis('tight')
plt.figtext(0.5, 0.965,"average image",size='large')
plt.show()
# use corr
nr = 0
for k in range(50):
maxcorr=0
for i in range(10):
a = X_train_n[i][:10].mean(axis=0)
corr = np.corrcoef(X_train.values[k,:],a)[0,1]
#print i,corr
if maxcorr <= corr:
maxcorr = corr
pred = i
if pred == df_train.label[k]:
nr += 1
print (k,maxcorr,pred,df_train.label[k])
print (nr / 50)
/**
* 获得保存目标编码
* @return int
*/
private function _source_result_charset()
{
if( preg_match("/^utf/", $this->targetCharSet) ) {
$rs = 1;
}
else if( preg_match("/^gb/", $this->targetCharSet) ) {
$rs = 2;
}
else if( preg_match("/^big/", $this->targetCharSet) ) {
$rs = 3;
}
else {
$rs = 4;
}
return $rs;
}
/**
* 编译词典
* @parem $sourcefile utf-8编码的文本词典数据文件<参见范例dict/not-build/base_dic_full.txt>
* 注意, 需要PHP开放足够的内存才能完成操作
* @return void
*/
public function MakeDict( $source_file, $target_file='' )
{
$target_file = ($target_file=='' ? $this->mainDicFile : $target_file);
$allk = array();
$fp = fopen($source_file, 'r');
while( $line = fgets($fp, 512) )
{
if( $line[0]=='@' ) continue;
list($w, $r, $a) = explode(',', $line);
$a = trim( $a );
$w = iconv('utf-8', UCS2, $w);
$k = $this->_get_index( $w );
if( isset($allk[ $k ]) )
$allk[ $k ][ $w ] = array($r, $a);
else
$allk[ $k ][ $w ] = array($r, $a);
}
fclose( $fp );
$fp = fopen($target_file, 'w');
$heade_rarr = array();
$alldat = '';
$start_pos = $this->mask_value * 8;
foreach( $allk as $k => $v )
{
$dat = serialize( $v );
$dlen = strlen($dat);
$alldat .= $dat;
$heade_rarr[ $k ][0] = $start_pos;
$heade_rarr[ $k ][1] = $dlen;
$heade_rarr[ $k ][2] = count( $v );
$start_pos += $dlen;
}
unset( $allk );
for($i=0; $i < $this->mask_value; $i++)
{
if( !isset($heade_rarr[$i]) )
{
$heade_rarr[$i] = array(0, 0, 0);
}
fwrite($fp, pack("Inn", $heade_rarr[$i][0], $heade_rarr[$i][1], $heade_rarr[$i][2]));
}
fwrite( $fp, $alldat);
fclose( $fp );
}
/**
* 导出词典的词条
* @parem $targetfile 保存位置
* @return void
*/
public function ExportDict( $targetfile )
{
if( !$this->mainDicHand )
{
$this->mainDicHand = fopen($this->mainDicFile, 'r');
}
$fp = fopen($targetfile, 'w');
for($i=0; $i <= $this->mask_value; $i++)
{
$move_pos = $i * 8;
fseek($this->mainDicHand, $move_pos, SEEK_SET);
$dat = fread($this->mainDicHand, 8);
$arr = unpack('I1s/n1l/n1c', $dat);
if( $arr['l'] == 0 )
{
continue;
}
fseek($this->mainDicHand, $arr['s'], SEEK_SET);
$data = @unserialize(fread($this->mainDicHand, $arr['l']));
if( !is_array($data) ) continue;
foreach($data as $k => $v)
{
$w = iconv(UCS2, 'utf-8', $k);
fwrite($fp, "{$w},{$v[0]},{$v[1]}\n");
}
}
fclose( $fp );
return true;
}
}
for (var i = 0; i < 10; ++i) {
setTimeout(function () {console.log(i)}, 0);
}
for (var i = 0; i < 10; ++i) {
setTimeout((function () {console.log(i)})(), 0);
}
for (var i = 0; i < 10; ++i) {
(function(i) {
setTimeout(function () {console.log(i)}, i * 100);
})(i)
}
function a()
{
this.showMsg = function()
{
alert("a want showMsg");
}
}
a.showMsg = function()
{
alert("a want showMsg static");
}
var p = new a();
a.showMsg(); //输出a want showMsg static
p.showMsg(); //输出a want showMsg
一种是实例方法,一种是静态方法。
实例方法当实例化时会添加到生成的对象中,静态方法在构造函数上,可以直接调用。
通常我们定义静态方法,可以减少全局变量的声明个数,避免变量污染,而且很多静态方法是在构造函数中使用,这样定义为对应的构造函数上,方便管理。
function a()
{
this.showMsg = function()
{
alert("haha");
}
}
//a.showMsg(); //调用失败,this绑定的方法只有在实例化的时候才会被绑定当a的实例上
a.showMsg = function(){
alert("heihei")
};
a.showMsg(); //"heihei" 调用成功,在类外部申明的属性相当于静态属性,不需要实例化,可以直接通过类名称访问
var b = new a(); //调用了a的构造函数,给b添加了showMsg属性
b.showMsg(); //"haha" 调用成功,b是a的实例
###合并相同值的键的实现方法
>>> a = [1,2,3,4,5,6]
>>> b = [7,7,9,8,8,8]
>>> d={}
>>> for k,v in zip(b,a):
d.setdefault(k,[]).append(v)
>>> d
{8: [4, 5, 6], 9: [3], 7: [1, 2]}
from itertools import groupby
from functools import reduce
dic_a = {1: 7, 2: 7, 3: 9, 4: 8, 5: 8, 6: 8}
dica = dict([reduce(lambda v, e: (int(str(v[0])+str(e[0])), k), g) for k, g in
groupby(dic_a.items(), lambda v: v[1])])
>>> dica
>>> {3: 9, 12: 7, 456: 8}
###ajax使用post方法传递数据 xhr.open('get','m.php?date='+cdate,true); //cdate是获取的日期值 xhr.send();
xhr=new XMLHttpRequest(); xhr.open('post','m.php',true); ###pdo的select操作怎么利用prepare语句返回结果数组 执行$db->select(array(''), 'admin')之后,$params = [''],$statement = "select ? from admin;
你prepare的语句是select ? from admin,注意?的位置。
然后在bindParam(1, $params[0]),实际执行的语句就变成:select '' from admin,就是select一个字符串''。
select '*' from admin和select * from admin是不同的。
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.send('date='+cdate); //cdate是获取的日期值 ###php中break 2 和 continue 2
foreach($arr1 as $value1)
{
foreach($value1 as $value2)
{
if($value2 == 0)
{
continue; //继续下次循环,在里层的foreach里面,默认为1
continue 2;//继续下次循环,在外层的foreach里面
break; 则同理
}
}
}
###php往后1个月的时间戳
ALTER TABLE tablename CONVERT TO CHARSET utf8; (输入这句命令后,可以插入含中文的记录)
ALTER TABLE tablename DEFAULT CHARSET utf8; (然而输入完这句,再插入含中文的记录时,会报错)
$date = new DateTime('2019-11-23');
$date->add(new DateInterval('P1M'));
echo $date->format('Y-m-d') . "\n";
strtotime的+1 month是直接加31天,很可能不是你想要的结果:
date('Y-m-d', strtotime('+1 month', strtotime('2016-01-31'))); // 2016-03-02
date('Y-m-d', strtotime('+1 month', strtotime('1999-01-31'))); // 1999-03-03
date('Y-m-d', strtotime('+1 month', strtotime('1999-03-31'))); // 1999-05-01
DateInterval('P1M')也是类似的结果。https://segmentfault.com/q/1010000008392233
// print 2017-04-28
echo date('Y-m-d', strtotime('+2 month', strtotime('2017-2-28')));
function xufei($add_num)
{
$month = date('m', time()) + 1;
$limit = strtotime(sprintf('%s-%s-01', date('Y'), $month)) - 86400 - strtotime(date('Y-m-d', time()));
$add_num += $month;
return strtotime(sprintf('%s-%s-01', date('Y') + floor($add_num / 12), $add_num % 12)) - 86400 - $limit;
}
echo date('Y-m-d', xufei(5));
function auto($class){
if(file_exists("./class/".$class.".php")) {
require("./class/".$class.".php");
}
}
function aa($class){
if(file_exists("./class2/".$class.".php")) {
require("./class2/".$class.".php");
}
}
spl_autoload_register("auto");
spl_autoload_register("aa");
###laravel在执行php artisan出现内容不足 sudo vim /etc/php/7.1/fpm/php.ini 把 memory_limit设定为 -1,即不对php的memory做限制。
memory_limit = -1 然后再尝试➜ yak git:(dev) ✗ php artisan make:model Dictionary -m
Model created successfully. ###php 静态方式调用非静态方法
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
class B
{
function bar()
{
// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
}
}
$a = new A();
$a->foo();
// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
$b = new B();
$b->bar();
// Note: the next line will issue a warning if E_STRICT is enabled.
B::bar();
?>
在不匹配的上下文中以静态方式调用非静态方法, 在 PHP 5.6 中已经废弃, 但是在 PHP 7.0 中, 会导致被调用方法中未定义 $this 变量,以及此行为已经废弃的警告。
<?php
class A {
public function test() { var_dump($this); }
}
// 注意:并没有从类 A 继承
class B {
public function callNonStaticMethodOfA() { A::test(); }
}
(new B)->callNonStaticMethodOfA();
?>
var arr=[]
var k={}
k.num=0
k.name=''
a=[1,2,3,4]
b=['tom','sun','bob','kiki']
for(i=0;i<4;i++)
{
k.num=a[i];
k.name=b[i];
arr.push(k)
}
console.log(arr)
结果:[{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4}]
k是一个对象,而且在内存中只有一个,循环中每次对k的属性赋值都在相同的内存空间里进行,所以push到arr中的4个对象都是相同的k对象
for(i = 0; i < 4; i++)
{
arr.push({
num : a[i],
name: b[i]
})
}
###python如何让减价乘除变成变量之后再变回来 a = 1 b = 2 for opt in ["+", "-", "*", "/"]: print(eval(str(a) + opt + str(b))) ###js 取对象属性的个数 for(pro in this){ if(this.hasOwnProperty(pro)) count++; } ###React和Vue的初学demo https://github.com/SimonZhangITer/VueDemo_Sell_Eleme ###login_log表转换成last_login表
把这张表转换成一张名为last_login的表,它只记录每个用户最近一次登录事件
INSERT
INTO
last_login(user_id,last_login_time,last_login_ip)
SELECT
log.user_id,
log.login_time ,
log.login_ip
FROM
login_log log,
(
SELECT
user_id,
MAX(login_time) last_login_time
FROM
login_log
GROUP BY
user_id
) last_log
WHERE
log.user_id= last_log.user_id
AND log.login_time= last_log.last_login_time;
###Linux 中php读写文件时,是Linux中的哪个用户在读写的 ps -ef |grep php-fpm 显示如下: www 38216 38215 0 Feb13 ? 00:00:02 nginx: worker process
这个www 用户 在.conf 里面user 可以配置 ###Python request 上传文件
curl --form file=@/home/test/sample.png --form username=test@noreply.com --form password=test --insecure --form lang[0]=cn --form lang[1]=jp --form langs[2]=en https://www.example.com/api
files = {'file': open('test.png', 'rb')}
requests.post(url, files=files)
with open('filename1', 'rb') as f1, open('filename2', 'rb') as f2:
files_to_upload = {
'filename1': f1,
'filename2': f2,
}
response = requests.post(url, files=files_to_upload)
###python如何根据关键字查询进程 import os
ret = os.popen("ps -ef | grep mysql | wc -l") print ret.read() ###PHP中session问题 session默认是个会话文件, 存在服务器端的, sessid就是会话文件的唯一标识,也就是文件名. 一般情况是通过cookie来传递sessid的, 因为http协议是无状态的, 所以每次都得传, 才能确定上一个请求和下一个请求的是不是同一个访问者.
那既然用sessid可以标识会话的唯一性, 那你能拿到它,自然也就可以登录别人的网站了. 你自己可以做个实验验证一下, 把segmentfault网站的cookie中的phpsessid拷贝到另一个浏览器上, 你会发现另一个浏览器也登录了 ###GitHub 支持的 emoji ###laravel多表查询
通过user表里的用户id查询order表里订单的详细信息,然后通过order里的aid查询account账号的账号信息
//在模型中设置关联
class Order extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'uid', 'id');
}
}
//查询出id为1的用户所有的订单,并用with关联出user的信息
$orders= Order::whereHas('user', function ($q) {
$q->where('id', 1);
})->with('user')->get();
###[尾递归优化](https://segmentfault.com/q/1010000008373129)
function f(n) {
return n < 2 ? n : f(n - 2) + f(n - 1);
}
f(50)
var fibArr =[0,1,1];
function fibonacci(n){
return fibArr[n]? fibArr[n]:(fibArr[n]=fibonacci(n-1)+fibonacci(n-2));
}
checkout . 放弃修改,可是发现新建的文件夹和文件夹内的内容并没有被删除掉
因为新建的文件夹和文件是 ‘Untracked files’ ,想放弃他们可以用 git clean -fd
###禁止手机键盘上的表emoji情输入 // 输入时删除emoji字符 $("input").on("input", function(){ this.value = this.value.replace(/\ud83d[\udc00-\ude4f\ude80-\udfff]/g, ''); });
"i am emoji 👨👩👧👦".replace(/\ud83d[\udc00-\ude4f\ude80-\udfff]/g, ''); // "i am emoji " ###php-cgi和php-fpm有什么关系? ###php中preg_replace匹配问题 \11将会使preg_replace() 不能理解你希望的是一个\1后向引用紧跟一个原文1,还是 一个\11后向引用后面不跟任何东西。 这种情况下解决方案是使用${1}1 ###背包算法PHP或Javascript实现方案 ###Python list转换成字符串 str([[[1, 2], [1, 2]], [[3, 4], [3, 4]]]) ###PHP关于递归和无限级分类
Chrome DevTools —JS调试https://segmentfault.com/a/1190000008396389
面试感悟----一名3年工作经验的程序员应该具备的技能http://www.cnblogs.com/xrq730/p/5260294.html
你真的了解如何将Nginx配置为Web服务器吗http://mp.weixin.qq.com/s/jYd9WkLOAvv6RfxfSa_PYg
中国行政区划 JSON 数据(从国家统计局抓取):【省份、城市、区县、乡镇】四级联动https://cnodejs.org/topic/57ff628a487e1e4578afb4b7 https://github.com/modood/Administrative-divisions-of-China
NumPy v1.11手册http://python.usyiyi.cn/translate/NumPy_v111/index.html
猫的前端回忆https://github.com/Wscats/Good-text-Share
PHP实现微信开放平台扫码登录源码https://dev.21ds.cn/article/36.html
从0到1学习node系列总索引https://www.xiabingbao.com/node/2017/01/08/node-list.html
Python微信智能回复http://lafree317.github.io/2017/02/16/%E5%BE%AE%E4%BF%A1%E6%99%BA%E8%83%BD%E5%9B%9E%E5%A4%8D/
图片处理 支持中文http://www.shapecollage.com/help http://ostagram.ru/queue_images/new?locale=cn
###php坑
/**
* 超级调试
*
* 调试非本地环境或分布式环境,通过Log查看变量传递
* 写入变量值到\var\log\php_super_debug.log
* @param mixed $data 日志数据
* @param string $log_path 日志路径
* @param string $log_name 日志名称
* @return void
*/
function super_debug($data, $log_path='\var\log\', $log_name='debug')
{
error_log(json_encode($data, JSON_UNESCAPED_UNICODE)."\n", 3, $log_path.$log_name);
}
// php实现下载图片
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename=download_name.jpg');
readfile($yourFilePath);
// php5.6开始干掉了@语法,php上传图片兼容版本写法
if (class_exists('\CURLFile')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('file' => new \CURLFile(realpath($destination)));//5.5+
} else {
if (defined('CURLOPT_SAFE_UPLOAD')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
}
$data = array('file' => '@' . realpath($destination));//<=5.5
}
###redis订阅
// ini_set(‘default_socket_timeout’, -1);
$redis = new \Redis();
$redis->pconnect('127.0.0.1', 6379);
//订阅
echo "订阅msg这个频道,等待消息推送... \n";
$redis->subscribe(['msg'], 'callfun');
function callfun($redis, $channel, $msg)
{
print_r([
'redis' => $redis,
'channel' => $channel,
'msg' => $msg
]);
}
//发布
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$redis->publish('msg', '来自msg频道的推送');
echo "msg频道消息推送成功~ \n";
$redis->close();
// 监视 count 值
$redis->watch('count');
// 开启事务
$redis->multi();
// 操作count
$time = time();
$redis->set('count', $time);
//-------------------------------
/**
* 模拟并发下其他进程进行set count操作 请执行下面操作
*
* redis-cli 执行 $redis->set('count', 'is simulate'); 模拟其他终端
*/
sleep(10);
//-------------------------------
// 提交事务
$res = $redis->exec();
if ($res) {
// 成功...
echo 'success:' . $time;
return;
}
// 失败...
echo 'fail:' . $time;
###php排序算法
/**
* 选择排序.
*
* @param array $value 待排序数组
*
* @return array
*/
function select_sort(&$value=[])
{
$length = count($value)-1;
for ($i=0; $i < $length; $i++) {
$point = $i;// 最小值索引
for ($j=$i+1; $j <= $length; $j++) {
if ($value[$point] > $value[$j]) {
$point = $j;
}
}
$tmp = $value[$i];
$value[$i] = $value[$point];
$value[$point] = $tmp;
}
return $value;
}