-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontent.json
More file actions
1 lines (1 loc) · 40.6 KB
/
Copy pathcontent.json
File metadata and controls
1 lines (1 loc) · 40.6 KB
1
{"pages":[],"posts":[{"title":"40分钟学会Git","text":"40分钟学会Git参考视频:40 分钟学会 Git | 日常开发全程大放送&搭配Github 一、前言 继前一篇”Github新手指南”,本文记录Git的一些基本操作,方便以后回忆使用。 二、Git是什么?Git 的三个概念:提交 commit、仓库 repository、分支 branch 三、基本命令 初始化一个仓库 git clone 和 点下载有啥区别? git init 第一次提交 git add -A git commit -m “提交信息” 查看提交的历史 git log —stat 工作区回滚 git checkout “filename” 撤销最后一次提交 git reset HEAD^1 以当前分支为基础新建分支 git checkout -b “branchname” 列举所有的分支 git branch 单纯地切换到某个分支 git checkout “branchname” 删掉特定的分支 git branch -d “branchname” 合并分支 git merge “branchname” 推送当前分支最新的提交到远程 git push 拉取远程分支最新的提交到本地 git pull","link":"/2021/06/30/40%E5%88%86%E9%92%9F%E5%AD%A6%E4%BC%9AGit/"},{"title":"Markdown基本语法","text":"Markdown基本语法参考视频:小姐姐20分钟教你使用Markdown一、前言 好久没写博客,老拖延症患者了,时间太长Markdown语法也忘的一干二净,以此文章记录Markdown基本语法,方便以后回忆使用。 二、基本语法 标题 ‘#’ x N + space ,(N: 1~6 分别对应1到6级标题) 内容下加任意个 ‘=’ 表示1级标题,内容下加任意个 ‘-‘ 表示2级标题 斜体、粗体、粗斜体 ‘*‘ + 内容 + ‘*‘ 将内容转换为斜体 ‘**‘ + 内容 + ‘**‘ 将内容转换为粗体 ‘***‘ + 内容 + ‘***‘ 将内容转换为粗斜体 链接、图片的插入 [链接名称](网址 “title”) eg: 链接名称 <网址> eg: https://www.baidu.com  eg: [链接名称][wangzhi1] 在最后面对wangzhi1赋值( [wnagzhi1]: 网站地址 ),markdown代码看起来更简洁 eg: https://www.baidu.com 角注 待解释[^er] ,并在文章末尾加上解释( [^er]: 角注内容) 相当于 待解释er 引用 ‘ > ‘ + 内容 ,可嵌套 显示效果为 eg eg eg 代码块、代码区块 \\’ ` \\’ + 代码 + \\’ ` \\’ 显示效果为: example Tab键 或 4个空格 ( Typora中为上下3个 ‘ ` ‘ ) 显示效果为: 1123 分割线 3个 ‘ * ‘ ‘ - ‘ ‘ _ ‘ 均可创建一条下划线 删除线 ‘ ~~ ‘ + 内容 + ‘ ~~ ‘ eg: 我不想考试 无序列表、有序列表 ‘ * ‘ ‘ - ‘ ‘ + ‘ 后加空格加内容即可创建无序列表 ‘ 1. ‘ 后加空格加内容即可创建有序列表 表格 12345|Tables | Are | Cool ||:-------- |:-----:| -----: ||col 3 is |right-aligned|$16000|col 2 is |centered | $12|zebra stripes|are neat | $1 html代码也可在markdown中用于排版 er. example ↩","link":"/2020/11/09/Markdown%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95/"},{"title":"我的第一篇博客","text":"第一章内容 第二章内容 参考链接","link":"/2020/07/22/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E7%AF%87%E5%8D%9A%E5%AE%A2/"},{"title":"Hello World","text":"Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new \"My New Post\" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment","link":"/2020/07/22/hello-world/"},{"title":"Github新手指南","text":"Github新手指南参考视频:Github 新手够用指南 | 全程演示&个人找项目技巧放送一、前言 本科生活告一段落了,望以后继续努力。本文记录Github的一些基本操作,方便以后回忆使用。 二、Git & GithubGit 是一个运行在你电脑上的版本控制软件,而 Github 是基于Git这个版本控制软件打造的网站。 Git 的三个概念:提交 commit、仓库 repository、分支 branch 三、安装 git : https://gitforwindows.org/ vscode : https://code.visualstudio.com/ 四、基本命令 git clone “git地址” 五、看别人的 Github 项目 git clone star README.md issue LICENSE 六、怎么去找开源项目 https://github.com/trending/ https://github.com/521xueweihan/HelloGitHub https://github.com/ruanyf/weekly https://www.zhihu.com/column/mm-fe 特殊的查找资源小技巧常用前缀后缀 找百科大全 awesome xxx 找例子 xxx sample 找空项目架子 xxx starter / xxx boilerplate 找教程 xxx tutorial","link":"/2021/06/30/Github%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97/"},{"title":"短学期-控制系统仿真(Ⅱ)","text":"控制系统仿真(Ⅱ)前言 时隔近四个月,终于开始写大三下暑期的控制系统仿真短学期的第二部分,老厚积薄发(Tuo Yan Zheng)了。 二、系统建模及模型转换与分析2.1 系统建模简介 数学建模目的 作为优化控制算法的数学模型 控制系统设计和仿真 工业过程故障诊断 操作人员培训 模型分类 静态模型 vs 动态模型 非线性模型 vs 线性模型 连续模型 vs 离散模型 随机模型 vs 确定性模型 非参数模型 vs 参数模型 分布参数模型 vs 集中参数模型 基本建模方法 机理建模 通过对过程内部运动机理的分析,根据其物理或化学变化规律,在忽略一些次要因素或做出一些近似处理后得到过程特性方程,其表现形式往往是微分方程或代数方程。这种方法完全依赖于足够的先验知识,所得到的模型称为机理模型。 非参数模型建模 由过程的输入输出数据确定模型的结构和参数。这种方法不需要过程的先验知识,把过程看作一个黑箱。但该方法必须在已经建立了过程后才能进行,而且得到的结果无法类推至设备尺寸和型号不同的情况。 系统辨识 通过设计辨识实验,在测试数据利用辨识算法得到模型参数的方法。主要步骤分为辨识实验设计、模型结构选择、模型阶次选择和模型校验等几个环节。 2.2 经验模型建模方法 常规建模方法 作图法(切线法) 两点法 面积法 振荡过程阶跃建模 最小二乘建模 2.3 系统辨识 系统辨识流程 2.4 作业 作业一 y^{(3)}(t)+10\\ddot{y}(t)+32\\dot{y}(t)+32y(t)=6u^{(3)}(t)+4\\ddot{u}(t)+2\\dot{u}(t)+2u(t) 给出上述微分方程的传递函数表达式; 将上述传递函数模型转换为零极点形式; 分别绘制该传递函数的阶跃响应图、Nyquist图、Bode图。 G(s)= \\begin{bmatrix}\\frac{2}{7s+1}e^{-3s} & \\frac{1}{3s+1}e^{-2s}\\\\\\frac{-2}{s+1}e^{-s} & \\frac{5}{10s+1}e^{-5s}\\end{bmatrix} 将上述多变量传递函数模型转换为离散状态空间模型,采样周期取1s; 在同一窗口中绘制上述传递函数模型和离散状态空间模型的阶跃响应曲线,并用图标加以标注。 123456789101112131415161718clear; %test2_1clc;Num = [6,4,2,2]; %分子Den = [1,10,32,32]; %分母G1 = tf(Num,Den);[z,p,K] = tf2zp(Num,Den);G2 = zpk(z,p,K);figure(1);step(G1);figure(2);nyquist(G1);figure(3);bode(G1); 12345678910111213141516171819202122232425262728clear; %test2_2clc;g11 = tf(2,[7,1],'InputDelay',3);g12 = tf(1,[3,1],'InputDelay',2);g21 = tf(-2,[1,1],'InputDelay',1);g22 = tf(5,[10,1],'InputDelay',5);G = [g11,g12; g21,g22]; Gsst = ss(G);dis_method = {'zoh','foh','impulse','tustin'};Ts = 1;Gd_zoh = c2d(Gsst,Ts,char(dis_method(1)));Gd_foh = c2d(Gsst,Ts,char(dis_method(2)));Gd_impulse = c2d(Gsst,Ts,char(dis_method(3)));Gd_tustin = c2d(Gsst,Ts,char(dis_method(4)));step(G);hold on;step(Gd_zoh);step(Gd_foh);step(Gd_impulse);step(Gd_tustin);legend('continus','Gd _zoh','Gd _foh','Gd _impulse','Gd _tustin');hold off; 作业二 1234567891011121314151617181920212223242526272829303132333435363738394041clear;clc;Z=[0.83041 0.82727 0.82406 0.82098 0.81824 0.8161 0.81481 0.81463 0.81579 0.81853 0.82304... 0.83172 0.83249 0.83584 0.84201 0.85125 0.86376 0.87975 0.89935 0.92263 0.94959 0.9801... 0.83587 0.84345 0.85631 0.87466 0.89867 0.9284 0.96377 1.0045 1.0502 1.1 1.1529... 0.84286 0.86013 0.88537 0.91865 0.95985 1.0086 1.0642 1.1253 1.1904 1.257 1.3222... 0.85268 0.88251 0.92286 0.97346 1.0336 1.1019 1.1764 1.254 1.3308 1.4017 1.4605... 0.86532 0.91049 0.96847 1.0383 1.118 1.2046 1.2937 1.3793 1.4539 1.5086 1.5335... 0.88078 0.94396 1.0217 1.1118 1.2102 1.311 1.4063 1.4859 1.5377 1.5484 1.5052... 0.89904 0.98276 1.082 1.1922 1.3061 1.4138 1.5021 1.5555 1.5573 1.4915 1.346... 0.92006 1.0266 1.1482 1.2768 1.4005 1.5034 1.5661 1.5678 1.4889 1.3156 1.0454... 0.94381 1.0752 1.2191 1.3624 1.4866 1.5684 1.5821 1.5032 1.315 1.0155 0.62477... 0.97023 1.1279 1.2929 1.4448 1.5564 1.5964 1.5341 1.3473 1.0321 0.61268 0.14763];x = 0.1:0.1:1.1;% y = 0.1:0.1:1.1;x = repmat(x,1,11);y = [ones(1,11),2*ones(1,11),3*ones(1,11),4*ones(1,11),5*ones(1,11),6*ones(1,11),7*ones(1,11),8*ones(1,11),9*ones(1,11),10*ones(1,11),11*ones(1,11)];y = y*0.1;wa = sin(x.^2.*y);wb = cos(y.^2.*x);wc = x.^2;wd = x.*y;we = ones(1,121);w = [wa',wb',wc',wd',we'];sita = (w'*w)\\w'*Z';[X,Y] = meshgrid(0.1:0.1:1.1);fn = sita(1)*sin(X.^2.*Y)+sita(2)*cos(Y.^2.*X)+sita(3)*X.^2+sita(4)*X.*Y+sita(5);figure;mesh(X,Y,fn);xlabel('X');ylabel('Y');zlabel('Fn');","link":"/2020/11/19/%E7%9F%AD%E5%AD%A6%E6%9C%9F-%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E4%BB%BF%E7%9C%9F-%E2%85%A1/"},{"title":"短学期-控制系统仿真","text":"控制系统仿真(短学期)参考书籍:控制系统计算机辅助设计——MATLAB语言与应用.薛定宇.清华大学出版社 前言 以此文章来记录大三下暑期的控制系统仿真短学期,总共上了四次课,接下来便分为四部分讲述,分别是“MATLAB简介及绘图”、“系统建模及模型转换与分析”、“数字PID控制器及参数整定”、“解耦控制”。 一、MATLAB简介及绘图1.1MATLAB简介MATLAB = MATRIX + LABORATORY (矩阵实验室) MATLAB已成为集 数值计算功能 、符号运算功能 和 图形处理功能 为一身的超级科学计算语言。 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 常用MATLAB工具箱: 序号 工具箱 备注 16 Control System Toolbox 控制系统工具箱 17 System Identification Toolbox 系统辨识工具箱 18 Fuzzy Logic Toolbox 模糊逻辑工具箱 19 Robust Control Toolbox 鲁棒控制工具箱 20 Model Predictive Control Toolbox 模型预测控制工具箱 21 Aerospace Toolbox 航空航天工具箱 1.2MATLAB绘图数据可视化过程: 准备数据 创建窗体,选择区域 绘图(matlab绘图函数) 设置曲线属性(线型、线宽等) 设置绘图区域属性(坐标轴范围等) 标题、轴标签等 颜色、标记点和线型控制命令: 希腊字母对照表 123456789101112131415161718192021222324Α α:阿尔法 Alpha Β β:贝塔 Beta Γ γ:伽玛 Gamma Δ δ:德尔塔 Delte Ε ε:艾普西龙 Epsilon Ζ ζ :捷塔 Zeta Ε η:依塔 Eta Θ θ:西塔 Theta Ι ι:艾欧塔 Iota Κ κ:喀帕 Kappa ∧ λ:拉姆达 Lambda Μ μ:缪 Mu Ν ν:拗 Nu Ξ ξ:克西 Xi Ο ο:欧麦克轮 Omicron ∏ π:派 Pi Ρ ρ:柔 Rho ∑ σ:西格玛 Sigma Τ τ:套 Tau Υ υ:宇普西龙 Upsilon Φ φ:fai Phi Χ χ:器 Chi Ψ ψ:普赛 Psi Ω ω:欧米伽 Omega 希腊字母等特殊字符用 \\加拼音 表示,拼音首字母大写表示大写的希腊字母(如果有的话),小写表示小写的希腊字母。 例: ‘\\omega’ = $\\omega$ ‘\\omega_n’ = $\\omega_n$ 课程作业一: 某欠阻尼二阶系统的传递函数为: G(s)=\\frac{\\omega_n^2}{s^2+2\\zeta\\omega_ns+\\omega_n^2} 其时域表达式为: y(t)=1- \\frac{e^{-\\zeta\\omega_nt}}{\\sqrt{1-\\zeta^2}}sin(\\omega_nt\\sqrt{1-\\zeta^2}+arctan\\frac{\\sqrt{1-\\zeta^2}}{\\zeta}) 在固定参数$\\omega_n=3$的前提下,绘制上述时域函数随参数$\\zeta$从0.1变化到0.9(间隔0.2)时系统的输出曲线,并标注各曲线的图例(显示希腊字母); 123456789101112131415161718192021222324clear;clc;t = 0:0.1:20;w = 3;zeta = 0.1;flag = 1;LineType = {'-',':','-.','--','-'};Marker = {'o','x','+','*','s'};figurewhile(zeta<=0.9) y = 1 - exp(-t.*zeta*w)./sqrt(1-zeta^2).*sin(t.*w*sqrt(1- zeta^2)+atan(sqrt(1-zeta^2)/zeta)); plot(t,y,char(LineType(flag)),'LineWidth',2); hold on flag = flag + 1; zeta = zeta + 0.2;endhold offtitle('\\omega_n=3时,\\zeta变化对系统的影响')xlabel('时间t')ylabel('系统响应')legend('\\zeta=0.1','\\zeta=0.3','\\zeta=0.5','\\zeta=0.7','\\zeta=0.9') 运行结果: 绘制上述函数的三维曲线图,其中$\\omega_n\\in[1,9],\\zeta\\in[0.1,0.9]。$ 1234567891011121314151617181920212223242526272829303132333435363738clear;clc;w = 1;%[t,zeta] = meshgrid(0:0.1:20,0.1:0.2:0.9);[zeta,t] = meshgrid(0.1:0.2:0.9,0:0.1:20);flag = 1;LineType = {'-',':','-.','--','-'};LineColor = {'r','g','b','c','k'};figurewhile(w<=9) y = 1 - exp(-t.*zeta*w)./sqrt(1-zeta.^2).*sin(t*w.*sqrt(1-zeta.^2)+atan(sqrt(1-zeta.^2)./zeta)); H = plot3(t,zeta,y,'color',char(LineColor(flag)),'LineStyle',char(LineType(flag)),'LineWidth',1); w = w + 2; if(flag == 1) H1 = H; end if(flag == 2) H2 = H; end if(flag == 3) H3 = H; end if(flag == 4) H4 = H; end if(flag == 5) H5 = H; end flag = flag + 1; hold onendhold offH_sum = [H1 H2 H3 H4 H5];H_sum = reshape(H_sum,25,1);title('y(t)三维曲线图');xlabel('时间t');ylabel('\\zeta');zlabel('系统响应');legend(H_sum([1 6 11 16 21]),'\\omega_n=1','\\omega_n=3','\\omega_n=5','\\omega_n=7','\\omega_n=9'); 运行结果:","link":"/2020/07/23/%E7%9F%AD%E5%AD%A6%E6%9C%9F-%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E4%BB%BF%E7%9C%9F/"},{"title":"一日一知:国内爬虫开发人员的未来(转载)","text":"一日一知:国内爬虫开发人员的未来(转载)原创 kingname 未闻Code;) 2022-04-04 17:12 摄影:产品经理 烤三文鱼腩 先抛出我的观点:希望各位做爬虫的同学,尽快,尽可能多地做海外的爬虫项目,爬海外的网站,这才是你们新的未来。 最近两年,我已经没有做过国内任何网站的爬虫了,根据这两年爬海外网站的一些经验,谈谈我的发现和想法。 内地的环境不适合做爬虫国内网站在这么多年的爬虫与反爬虫的斗争中,反爬能力越来越强,瑞数、极验和其它第三方专业反爬虫系统,已经能挡住很多人了。 国内值得爬的网站就只有几个,大家都在爬,你有1GB的数据,他有1TB的数据,内卷极其严重。并且还有很多工作室直接使用群控技术,几万台机器一起爬,普通人很难跟他们竞争。 国内一些专门做舆情分析的公司,他们甚至可以通过地下渠道直接拿到网站的内部API,数据质量比你通过爬虫爬的数据高多了。 最后,比较重要的是,爬国内的大网站,很容易被请喝茶。轻者拘留,重者在档案里面留下一辈子的污点。 海外数据的新机遇NLP的语料NLP最重要的四个元素就是:语料、模型、算法、算力。其中模型和算力可以复用,自然不是问题。但因为没有人抓海外的数据,因此缺少了语料,没有语料,就没有办法训练模型。NLP里面的ABSA、语意理解、文本生成、智能问答也全都做不下去。特别是小众语言——法语、俄语、韩语、西班牙语,几乎就没有国内的公司在做。 抓数据不难,但难在对数据的标注。现在国内对小众语言的标注,还停留在使用Google翻译把小众语言先翻译成英文,再让人去给英文打标的阶段。 如果你能尽早收集小语种的语料,然后让懂这个语料的人去打标,那么以后即便你不直接做NLP,光出售小语种的标注数据,你都可以大赚一笔。国内学习小语种的大学生,找工作都很困难。如果你能让他们兼职给你标注数据,不仅提供了就业岗位,而且价格非常低廉,属于是双赢。 语料抓取的壁垒不是爬虫技术,而是数据量和数据多样性。数据量达到一定规模以后,壁垒自然就能形成。别人的爬虫再先进,只要他短期收集不了那么多的数据,那么他就没有办法超过你。 总之,越早开始收集海外语料,越早能形成自己的壁垒。 游戏出海众所周知,游戏在内地已经没有未来了,各大游戏厂商在接下来的几年会把游戏出海作为最重要的目标。目前已经有几家公司的游戏在东南亚大杀四方,在欧美市场也一路血洗当地的产品。想必大家都知道我说的是哪几个游戏。 但可以确定的是,目前国内做舆情分析的公司,还没有谁能够把海外舆情(特指非英语国家)分析做好。如果你有丰富的海外舆情抓取经验,那么当这些公司招聘的时候,你就有很高的竞争力。 尽职调查除了游戏外,基于数据的尽职调查也是一个方向。投资人在确定是否要投资某个创业公司前,都会做尽职调查(DD)。其中基于数据的尽职调查(DDD)就是其中的重要一环。例如一个电商初创公司告诉投资人,他每个月的销售额有几百亿,然后你用爬虫爬一下他的商城,根据每个商品的销量和评论,反推出他的月销售额只有几百元,那么你就能知道这个电商公司在骗投资人了。 又比如某个直播网站,对投资人宣称自己的日活月活非常高,然后你用爬虫监控一下热门主播的评论数,礼物数,设计一个公式计算出它的真实日活月活,两边一对比你就知道他们有没有骗人了。 海外网站是新的蓝海只要你把视野放开,稍微研究一下我国台湾、香港的网站,以及英法意德,巴西韩国,俄罗斯东南亚的网站,你就会发现: 大部分网站几乎没有反爬虫机制 语料极其丰富 小部分网站有极难的反爬虫系统(Akamai),但是可以通过曲折绕过的方式拿到数据 国内几乎没有竞争对手,你爬得越多,你积累的原始资本就越大 如果你是个人开发者,你几乎不用担心有什么风险。因为不会有人来找你喝茶。 怎么跟外国的公司竞争?有人可能会问,难道美国、欧洲自己没有做爬虫、做舆情的公司吗?他们肯定也做了很多年了,为什么国内的公司要找你,而不去找这些欧美本土的公司? 我认为,就凭这五个字:你是自己人。 如果你是一家中国的公司,专注分析海外舆情。即便你的业务能力跟一家欧美公司差不多甚至稍微低一些(当然低太多可不行),国内的大公司在选择合作伙伴的时候,一定会优先考虑你,而不是欧美当地的公司。 无论从人性上,还是从法律合规上,选择自己人都会安心很多。从人性上,中国人会选择跟中国人合作。大家都在互联网圈子,你这个公司怎么样,你这个老板怎么样,稍稍打听一下就知道了。只要知道你确实有实力,为什么不找你? 从业务上,两边公司沟通都用中文,有什么问题线上聊一下或者出个差,早上出发中午就能到,沟通起来很方便。 大公司应该怎么做爬虫?我提到如果你是个人开发者或者小公司,那么你几乎不用担心任何风险。尽管爬就是了。 但如果你是国内的大公司,那么还是有一些注意事项的。因为大公司会担心像GDPR这样的信息保护法,也会担心如果爬虫被发现了会影响自己的国际声誉。但这些其实都不是什么大问题,都有办法绕过去的。 具体做法跟本文的关系不大,我就先不讲了。如果大家对爬虫出海有兴趣的话,请留言告诉我,我可以再分享一些具体的实践经验。 END","link":"/2022/04/04/%E4%B8%80%E6%97%A5%E4%B8%80%E7%9F%A5%EF%BC%9A%E5%9B%BD%E5%86%85%E7%88%AC%E8%99%AB%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E7%9A%84%E6%9C%AA%E6%9D%A5(%E8%BD%AC%E8%BD%BD)/"},{"title":"大手笔!微软一口气在 GitHub 开源了 4 个技术教程","text":"大手笔!微软一口气在 GitHub 开源了 4 个技术教程。。(转载)未闻Code;) 2022-04-13 20:00 以下文章来源于GitHubDaily ,作者小 G GitHubDaily.专注于分享 GitHub 上知名的 Python、Java、Web、AI、数据分析等多个领域的优质学习资源、开源项目及开发者工具,为 GitHub 开发者提供优质编程资讯。 众所周知,自微软收购 GitHub 以后,在 GitHub 平台上的开源项目也渐渐多了起来。毕竟买下了全球最大的代码托管平台,微软肯定要在开源这一块有所表率。 而在一系列开源举措之下,也使得诸多开发者对之前那个喜欢以闭源为主,圈地自萌的微软也有很大的改观。 去年,微软在 GitHub 上频放大招,推出了一系列「XX-for-Beginners」的开源技术教程。 顾名思义,就是写给初学者看的技术教程,里面覆盖了 Web 开发、机器学习、Python、物联网、全栈、数据科学、DevOps 等诸多内容。如果你有耐心,把这些教程挨个通读一遍,定会让你的技术实力有质的提升。 在我将这几大教程初略过了一遍之后,发现他们都有着以下统一特点: 总课时均为期 12 周,共 24 节,让你可以合理安排学习计划; 每个课程均附有项目实战开发讲解,更加强调实践出真知; 每节课均附有测验说明、草图笔记、作业任务等内容,助你更系统、更全面的掌握课程内容。 接下来,便由我来跟大家好好介绍下,这几大教程里面都包含了什么。 ML for Beginners中译名:《给初学者看的机器学习》,主要讲解机器学习简介与历史、自然语言处理、常用 NLP 任务、 语义及情感分析等基础知识。 此外,还将通过开发南瓜价格预测、美食分类、酒店情感分析等多个项目,带你了解机器学习的实际使用。 在课程插图方面,也让微软得到了不少加分。 以下图为例,微软讲师通过插图的方式,更为直观、更具趣味性的像我们展示了机器学习的发展历史: 由上图我们可知,机器学习起源自 1950 年代,阿兰图灵让机器学会思考的想法,在后续的不断迭代演变过程中,才成为我们今天口中所讨论的机器学习。 类似的插图及详细内容介绍,大家可以去该课程的 GitHub 仓库一窥究竟。 GitHub:https://github.com/microsoft/ML-For-Beginners Web Development for Beginners中译名:《给初学者看的 Web 开发教程》,主要讲解 JavaScript、CSS、HTML 相关的基础知识。 作者还会通过开发打字游戏、浏览器扩展、太空游戏等多个项目,带你了解 Web 开发的整体流程。 其实,Web 开发入门并不难,难的是面对当下市场上林林总总的课程,如何去选择最适合自己的一门课。 许多人在学了 HTML、CSS、JavaScript 等基础知识后,下一步何去何从,毫无头绪。但在微软这门课里面,每随着一个知识点的深入,便会对应一个简单的实战项目开发,让你从实践中去充分吸收知识。 另外,为了使得课程对新手更加友好,里面还会对编程语言、代码编辑器、浏览器、命令行工具等内容作出补充说明,就像这张配图一样: 看到配图上面的内容,是不是已经开始抑制不住你想学习的冲动了?没事,Star 一下这个项目的 GitHub 仓库,开始学起来吧! GitHub:https://github.com/microsoft/Web-Dev-For-Beginners IoT for Beginners中译名:《给初学者看的 IoT》,主讲物联网通用知识、传感器数据收集、执行器响应处理、硬件联网方式、位置追踪、语音识别等基础知识。 通过开发植物监控、浇水系统、车辆跟踪、声控烹饪计时器等多个项目,带你了解物联网的实际使用。 课程中的多个项目,将打通食物从农场,再到餐桌的完整处理流程,其中涉及农业、物流、制造、零售、消费者等多个产业,覆盖了物联网设备在当下主流行业的应用。 在万物互联的时代,物联网这一概念也开始普及到千家万户,古代人们所畅想的隔空控物,与物对话,在随着声控硬件的推广下,也慢慢让这一理念得以实现,成为常态。 而作为技术人员的我们,为了让自己在职场中更加不可替代,便得先人一步,看到未来,提前做好规划与打算。 小 G 认为,物联网这一行业,未来定会诞生很多有趣的应用与产品,这一点,也在前阵子火爆全网的「人造智能单车」上面得到了应验。 即使你未来不考虑从事这一行业,学点物联网知识,下一个野生钢铁侠指不定就是你呢🤓。 GitHub:https://github.com/microsoft/IoT-For-Beginners Data Science for Beginners中译名:《给初学者看的数据科学》,主讲数据科学通用知识、统计与概率导论、SQL 与 NoSQL 的使用,可视化数据分布、数据科学生命周期简介等基础知识。 通过这一教程,你可以充分了解数据科学背后的基本概念,以及它与人工智能、机器学习和大数据之间的关系,并进一步认识、学习关系型数据库 SQL,以及非关系型数据库 NoSQL 的技术理念与实际应用场景。 在数据的分析、处理、探索等方面,搭配上 Matplotlib、Pandas 以及各类低代码工具,无疑可以让开发效率提升不少,而这些工具的使用,在该教程中也同样有所提及。 在现今这个数据大爆炸时代,从一堆繁杂且冗余的数据中,分析并提取出其应有的价值,也颇为考验编程功力。 微软提供的这一教程,学习路径与架构设计的脉络图却颇为清晰,并在此之间,穿插了很多实际用例,让新手在数据科学这一领域的探索中,少走很多弯路。 GitHub:https://github.com/microsoft/Data-Science-For-Beginners 总结上面几个教程,便是微软此次在 GitHub 上开源的机器学习、Web 开发、物联网三大课程,看完之后,你们是不是觉得微软此次的开源非常良心呢? 未来有新系列的开源技术教程发布,我也会在 GitHubDaily 公众号第一时间推文告知,为了避免走散,大家可以给公众号点个星标,置顶一下。 文中所提到的所有开源项目,已收录至 GitHubDaily 的开源项目列表中,有需要的,可访问下方 GitHub 地址或点击「阅读原文」查看: GitHub:https://github.com/GitHubDaily/GitHubDaily END","link":"/2022/04/13/%E5%A4%A7%E6%89%8B%E7%AC%94%EF%BC%81%E5%BE%AE%E8%BD%AF%E4%B8%80%E5%8F%A3%E6%B0%94%E5%9C%A8%20GitHub%20%E5%BC%80%E6%BA%90%E4%BA%86%204%20%E4%B8%AA%E6%8A%80%E6%9C%AF%E6%95%99%E7%A8%8B/"},{"title":"初识C语言","text":"第一章 初识C语言参考书籍:C Primer Plus(第6版)中文版一、前言 打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。 二、主要内容1. C语言起源1972年,美国贝尔实验室的丹尼斯·里奇(Dennis Ritch )和肯·汤普逊(Ken Thompson )在开发UNIX操作系统时设计了C语言,C语言是在B语言(汤普逊发明)的基础上进行设计。 2. C语言优点 高效性:C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序(即根据具体平台)以获得最大运行速度或最有效地使用内存。 可移植性:从8位微处理器到克雷超级计算机,许多计算机体系结构都可以使用C编译器。 面向程序员:程序员利用C可以访问硬件、操控内存中的位。C语言有丰富的运算符,能让程序员简洁地表达自己的意图。C语言在提供更多自由的同时,也让使用者承担了更大的责任。 3. C语言缺点想拥有自由就必须时刻保持警惕 ,要享受用C语言自由编程的乐趣,就必须承担更多的责任。 特别是,C语言使用指针,而涉及指针的编程错误往往难以察觉。 C语言紧凑简洁,结合了大量的运算符。正因如此,我们也可以编写出让人极其费解的代码。 4. C语言应用范围早在20世纪80年代,C语言就已经成为小型计算机(UNIX系统)使用的主流语言。从那以后,C语言的应用范围扩展到微型机(个人计算机)和大型机(庞然大物)。 特别是,C语言已成为嵌入式系统编程的流行语言。也就是说,越来越多的汽车、照相机、DVD播放机和其他现代化设备的微处理器都用C语言进行编程。 C++在C语言的基础上嫁接了面向对象编程工具(面向对象编程 是一门哲学,它通过对语言建模来适应问题,而不是对问题建模以适应语言) 5. 计算机能做什么现代的计算机由多种部件构成。中央处理单元 (CPU)承担绝大部分的运算工作。随机存取内存 (RAM)是存储程序和文件的工作区;而永久内存存储设备(过去一般指机械硬盘,现在还包括固态硬盘)即使在关闭计算机后,也不会丢失之前储存的程序和文件。 CPU的工作非常简单,至少从以下简短的描述中看是这样。它从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令。 CPU有自己的小工作区—— 由若干个寄存器 组成,每个寄存器都可以储存一个数字。一个寄存器储存下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址。CPU能理解的指令有限(这些指令的集合叫作指令集 )。而且,这些指令相当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。例如,从内存移动到寄存器。 6. 高级计算机语言和编译器高级编程语言(如,C)以多种方式简化了编程工作。使用高级编程语言,可以在更抽象的层面表达你的想法,不用考虑CPU在完成任务时具体需要哪些步骤。 编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序。 7. C 语言标准 C89/C90/ANSI C 美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。 ANSI/ISO标准的最终版本通常叫作C89 (因为ANSI于1989年批准该标准)或C90 (因为ISO于1990年批准该标准)。另外,由于ANSI先公布C标准,因此业界人士通常使用ANSI C。 在该委员会制定的指导原则中,最有趣的可能是:保持C的精神。委员会在表述这一精神时列出了以下几点: 信任程序员; 不要妨碍程序员做需要做的事; 保持语言精练简单; 只提供一种方法执行一项操作; 让程序运行更快,即使不能保证其可移植性。 C99 1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。 第1个目标是,支持国际化编程。例如,提供多种方法处理国际字符集。 第2个目标是,“调整现有实践致力于解决明显的缺陷”。 第3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力。 C11 标准委员会在2007年承诺C标准的下一个版本是C1X,2011年终于发布了C11标准。 出于对当前编程安全的担忧,不那么强调“信任程序员”目标了。 而且,供应商并未像对C90那样很好地接受和支持C99。这使得C99的一些特性成为C11的可选项。 8. 使用C语言的7个步骤C是编译型语言。编写C程序的过程通常有7个步骤(也是比较通用的程序设计步骤)。 定义程序的目标 想要程序去做什么首先自己要明确自己想做什么,思考你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。 设计程序 虑如何用程序来完成任务。例如,用户界面应该是怎样的?如何组织程序?目标用户是谁?准备花多长时间来完成这个程序? 还要决定在程序(还可能是辅助文件)中如何表示数据,以及用什么方法处理数据。 通常,选择一个合适的方式表示信息可以更容易地设计程序和处理数据。 编写代码 把你设计的程序翻译成C语言。 一般而言,使用文本编辑器创建源代码 文件。该文件中内容就是你翻译的C语言代码。 编译 编译器是把源代码转换成可执行代码的程序。C编译器负责把C代码翻译成特定的机器语言。 C编译器还将源代码与C库的代码合并成最终的程序(更精确地说,应该是由一个被称为链接器的程序来链接库函数,但是在大多数系统中,编译器运行链接器)。其结果是,生成一个用户可以运行的可执行文件,其中包含着计算机能理解的代码。 编译器还会检查C语言程序是否有效。如果C编译器发现错误,就不生成可执行文件并报错。 运行程序 测试和调试程序 维护和修改代码 说明 编程并非像描述那样是一个线性的过程。有时,要在不同的步骤之间往复。 许多初学者经常忽略第1步和第2步(定义程序目标和设计程序),直接跳到第3步(编写代码)。那些跳过前两个步骤的人往往浪费了更多的时间,因为他们写出的程序难看、缺乏条理、让人难以理解。要编写的程序越大越复杂,事先定义和设计程序环节的工作量就越大。 磨刀不误砍柴工,应该养成先规划再动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架。这样在编写代码的过程中会更加得心应手、条理清晰。 9. 编程机制用C语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件 (source code file )。大部分C系统,包括之前提到的,都要求文件名以.c结尾(如,wordcount.c 和budget.c )。在文件名中,点号(.)前面的部分称为基本名 (basename ),点号后面的部分称为扩展名 (extension )。 目标代码文件 C编译器把源代码转换为机器语言代码,并把结果放在目标代码文件 (或简称目标文件 )中。 启动代码 启动代码(startup code)充当着程序和操作系统之间的接口。 库函数 几乎所有的C程序都要使用C标准库中的函数。 链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。 简而言之,目标文件和可执行文件都由机器语言指令组成的。然而,目标文件中只包含编译器为你编写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。 10. 本章小结C是强大而简洁的编程语言。它之所以流行,在于自身提供大量的实用编程工具,能很好地控制硬件。而且,与大多数其他程序相比,C程序更容易从一个系统移植到另一个系统。 C是编译型语言。C编译器和链接器是把C语言源代码转换成可执行代码的程序。 用C语言编程可能费力、困难,让你感到沮丧,但是它也可以激发你的兴趣,让你兴奋、满意。我们希望你在愉快的学习过程中爱上C。","link":"/2022/04/25/C%20Primer%20Plus_%E7%AC%AC%E4%B8%80%E7%AB%A0%20%E5%88%9D%E5%A7%8BC%E8%AF%AD%E8%A8%80/"},{"title":"爬虫出海Step by Step(一)","text":"爬虫出海Step by Step(一)原创 kingname 未闻Code;) 2022-04-12 19:48 摄影:产品经理 小甜点 上周的文章《一日一知:国内爬虫开发人员的未来》发布以后,很多同学私信我表示对爬虫出海很有兴趣,希望我能详细介绍一下。因此,我准备用几篇文章来介绍爬虫出海的具体做法细节和注意事项。 今天我们的话题是,如何规避法律风险。 如果你是个人开发者,那么你直接写爬虫爬就可以了。不会有人跨国来抓你的。 如果你是小公司,并且在海外没有分公司,那么你也可以像个人开发者一样直接爬。 如果你是大公司,关注自己的国际声誉;或者你的公司在海外有分公司,那么你需要注意如下的几个问题。 藏好自己很多网站几乎没有反爬虫机制。你直接使用requests.get(url)就能获取数据,连headers参数都不需要加。网站反不反爬虫是网站的事情,但作为爬虫,把自己伪装成正常的浏览器请求,并使用代理IP是基本的要求和素质。 否则,等有一天有人在推特上@你的公司,并附上了Nginx的IP记录,那你的公司可就倒了大霉了。 GDPR或者其它相关法律条文GDPR**[1]**是欧洲的数据保护法规,它要求你不能在未经允许的情况下擅自收集欧洲用户的个人信息。在欧洲运营的互联网公司,数据也不能离开欧洲。 Google和Facebook曾经都因为违反了GDPR而遭受上亿欧元的罚款。如果你的公司在欧洲有分公司,就需要特别注意这一点,否则你将会面临巨额罚款或者被查封公司。 这种情况下,如果你要做爬虫,建议是爬哪个国家的数据,就在那个国家本土部署爬虫。通过Aws或者GCP购买那个国家的服务器,把爬虫部署到服务器上面。同时,Hive/Hue等等数据分析相关的服务,也需要部署到对应的国家。 如果你能招聘外籍员当然最好,只让那边的员工来接触数据。如果你需要让中国的员工去分析数据,那么你需要准备一个VPN,把中国的电脑和爬虫服务器、数据分析服务器组建起一个虚拟的局域网,然后让这边的员工连上去进行操作。 如果最后分析以后的数据,会以网页的形式呈现给客户,也需要把网站搭建在对应国家的服务器上,然后客户通过VPN连上去查看。 如果某个大洲有多个国家都需要爬取,你也可以在Aws或者GCP上购买这个洲的服务器,而不是具体每一个国家。例如你要爬英法意德的数据,你不需要在四个国家各搭建一套系统。整个欧洲共用一套就可以了。 另外,就是无论如何,不要涉及用户个人信息。 数据不只有一家国外有些网站的反爬虫特别强,例如Facebook,封账号封得非常厉害。又比如App Store的App评论和星级,也不太好直接抓。但是,已经有一些第三方网站使用某种我们不知道的方法,抓了他们的数据并在自家网站公布了,那么,你可以去抓这些第三方网站的数据。 有些网站开放了API,申请他们的API以后,直接就能根据文档调用API拿到数据,例如推特。不过现在推特已经不批准新API的申请了。我们公众号粉丝群里面有一个同学手上还有一个获得了开放API权限的账号,很多人找他借来爬数据。 还有很多网站,直接开放了全文的RSS,你直接解析RSS地址就能拿到最新的内容了。 善于利用网站的多个版本欧美这些注重政治正确国家,会额外关注残障人士和老年人的网页使用体验,并设置了专门的页面。当主站特别难爬的时候,找到他们给残疾人设计的页面或者老手机设计的页面,爬起来就很容易。 例如Facebook主站非常难爬,但是如果访问https://mbasic.facebook.com/就非常简单,这个版本的页面是给2G老手机使用的,页面上没有JavaScript,所有请求都是通过GET或者POST的参数实现的。 总结如果你是国内的一家大公司,担心做海外爬虫影响公司的声誉,那么你可以在目标国家开个分公司来爬,或者找对应国家的爬虫外包团队。数据爬好以后,就存在那个国家的服务器上。国内的数据分析员工通过VPN连上去以后,远程分析数据。不要尝试把数据拉回国内。即使加密以后传回国内也不行。 另外,一个数据有多种抓取方式,一种方式不行,就多试几种,总会有一个意想不到的渠道获取数据。 下一篇文章,我们来聊聊怎么寻找数据源。 参考文献 [1] GDPR: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation END","link":"/2022/04/13/%E7%88%AC%E8%99%AB%E5%87%BA%E6%B5%B7Step%20by%20Step(%E4%B8%80)/"}],"tags":[{"name":"Git Github","slug":"Git-Github","link":"/tags/Git-Github/"},{"name":"Markdown","slug":"Markdown","link":"/tags/Markdown/"},{"name":"Github","slug":"Github","link":"/tags/Github/"},{"name":"自动控制","slug":"自动控制","link":"/tags/%E8%87%AA%E5%8A%A8%E6%8E%A7%E5%88%B6/"},{"name":"C Primer Plus","slug":"C-Primer-Plus","link":"/tags/C-Primer-Plus/"}],"categories":[]}