公司有钱就可以做自动化,一般 1 个前端配置 2 个自动化测试开发, 从单元测试到模块测试, 每天自动 build 版本,然后跑所有的自动化测试, 结果反馈给前端。版本上线 先要出自动化测试报告, 如果不合格就退回去,重新改。这种比较费钱和耗时间, 但是出来的东西质量是有保障的。
直接 js 裸写一个下载队列,批量下载不就可以了。如果迁移到其他平台,换成多线程下载就可以了。
```javascript
function OnFinished(aryResult)
{
console.log("下载完成了", aryResult)
}
var download=new JSDownload();
download.FinishCallback=OnFinished;
var downloadList=
[
{Url:"https://abc"},
{Url:"https://abc1"},
{Url:"https://abc2"}
];
download.SetDownload(downloadList);
download.Start();
```
```javascript
//批量下载
function JSDownload()
{
this.DownloadData;
/*
Key:url
Value:
{
Status: 状态 0=空闲 1=下载中, 20=下载成功 30=失败 ,
Message:错误信息,
ProcSuccess: 单个数据到达回调(不处理就 null)
ProcFailed: 单个数据失败回调(不处理就 null)
RecvData: 接收到的数据
}
*/
this.FinishCallback; //全部下载完回调
//设置批量下载地址
this.SetDownload=function(aryDownload)
{
this.DownloadData=new Map();
for(var i in aryDownload)
{
var item=aryDownload[i];
if (this.DownloadData.has(item.Url)) continue;
var downItem={Url:item.Url, ProcSuccess:item.ProcSuccess, ProcFailed:item.ProcFailed , Status:0 };
this.DownloadData.set(downItem.Url,downItem);
}
}
//是否全部下载完成
this.OnFinished=function()
{
for (var item of this.DownloadData) //遍历下载队列 是否都下载完了
{
if (item[1].Status==20 || item[1].Status==30) continue;
return;
}
if (this.FinishCallback) //通知回调 数据都下载完了
{
var aryResult=[];
for (var item of this.DownloadData)
{
var downloadItem=item[1];
if (downloadItem.Status==20)
aryResult.push({Url:downloadItem.Url, Success:true, Data:downloadItem.RecvData});
else
aryResult.push({Url:downloadItem.Url,Success:false});
}
this.FinishCallback(aryResult);
}
}
//开始下载
this.Start=function()
{
var self=this;
for (var item of this.DownloadData)
{
console.log('[JSDownload::Start] start dowloand ', item[0]);
this.AjaxDownload(item[1]);
}
}
this.AjaxDownload=function(item)
{
var self=this;
$.ajax({
url: item.Url,
type:"get",
dataType: "json",
async:true,
success: function (data)
{
if (item.ProcSuccess) item.ProcSuccess(data, self);
item.RecvData=data;
item.Status = 20;
self.OnFinished();
},
error:function(jqXHR, textStatus, errorThrown)
{
if (item.ProcFailed) item.ProcFailed(jqXHR,self);
item.Status = 30;
self.OnFinished();
}
});
item.Status=1;
}
}
```
租一个 2000/年的云机器, 装个 svn 服务器, 就可以了,1 个小时就能搞完, 没那么麻烦, 记得定期备份。
@
hbolive 2004 年 上海浦东陆家嘴新盘也就 8000-10000/平(不过要排队买, 买的人很多),上海张江镇上的房子也就 3000-5000 。
35 岁以后 写代码就是一种爱好了, 有空就帮人做做技术资讯,框架设计什么的。
带带团队,codereview, 公司核心业务底层模块开发,把控下项目进度, 看看最新技术文章什么的。时间比较自由了。
注意!! 35 岁以上的,一般都是 2004-2008 年参加工作的,哪个时候基本北上广房价不高的,不是市中心的房子 1 个月工资可以买 2-3 平吧,贷个款(那个时候贷款也松)。基本不会有房贷压力了。如果你那个时候没买房, 我就没话说了。
日志这个东西怎么说呢, 应该是越详细越好,但是打的多了会降低性能,你要把日志成分多个等级的,如果调试日志,模块日志, 错误日志 等等要细分, 通过接口就可以动态控制打印哪些等级或哪些模块的日志。
我一般使用的日志格式: 日期 ,时间, 进程 id, 线程 id, 日志等级, 文件名,行号, 类名, 函数名 , 具体的日志输出信息。
日志信息文件可以是 1 个小时生成 1 个日志文件或 1 天生成 1 个日志文件,具体看日志量了。 后面就是对接日志收集+日志分析系统,开源的很多随便找一个就可以,然后定期清理日志文件比如保留最近 1 个月或 1 个星期
@
pperlee 买多口的 WAN 交换机, 电信,移动,联通都装上, 反正手机套餐都送宽带。 这样加起来就有 800M- 1G 出口流量, 开 BT 就很爽
如果是别墅或多层, 每一层拉一根光纤到你的机柜,每层单独配一个交换机,这样单层内的数据交换就直接通过每一层的交换机走了, 和机柜数据交换就直接通过光纤走, 这样可以支持更多用户同时连接你的 NAS 看 4K 高清,另外,每次层的交换机的电源线 全部单独拉到机柜,接 UPS (后期可以买一个加用发电机),家里的摄像头, 无线 AP 等其他硬件设备通过网线供电。 这样就算小区断电了, 你可以确保设备正常使用。
代写编程作业。 如果你是十多年开发经验的老程序员,可以在小区开编程班 4-5 个人的小班。 感觉这个还轻松一点。
敲代码的人, 都不愿意写文档, 哪个程序员喜欢写文档, 能给你写点注释就不错了。
看个人需求了, 一般人 600-700 的软路由就够了。也就装个梯子,看看片,打打游戏用。
因为有了开源, 所以业务创新对技术要求降低了,拿几个开源的拼装下在加点应用场景和流量就可以出产品了,所以招 1-2 年的开发 和 5 年以上的其实都一样的。
底层技术基本就没人做了, 开发周期长,回报不确定。还不如等国外开源出来, 直接抄下来的快。
大环境就是这样,没办法。基本就是在搬砖。 房子都是建在别人的地基上。
可以写你自己模块的自动化单元测试。bug 这东西是看自动化测试代码覆盖率>90%的情况下, 你的测试用例通过率。
用不用开源的不都一样嘛, 都是用 java 或 js 写的,你要是觉公司的哪些模块不好,你可以直接把开源模块代码扣出来迁移过来或者修改成符合你们公司业务逻辑的模块不就可以了。
技术这个东西不是使用一下开源的东西就叫技术,那个叫搬砖。体力活。
1. 全栈的好处就是你在项目开始设计的时候知道怎么根据业务的要求和投入的人员更好的设计前后端接口,开发进度。
2. 在项目优化的时候知道这个项目的前后端应该如何优化。这个比只懂一端来优化效率要高。
3. 全栈在公司中一般都是救火人员,紧急的项目,出了问题的项目你都上去救火,基本都是核心开发人员。
最后全栈这个技能不好练。