今天用暴力猴脚本下载的 youtube 视频音频和视频是分开的,查找了一下解决办法,记录一下:

  1. 首先,win7 安装 ffmpeg。注意配置环境变量,如果环境变量不生效,最好把用户环境变量也配置一下。
  2. 将需要合并的音频和视频文件放在同一个目录下,打开 cmd,输入 ffmpeg -i 1.mp4 -i 2.mp4 -vcodec copy -acodec copy output.mp4
    其中,1.mp42.mp4 为需要合并的文件名,output.mp4 为输出文件名,可任意修改。
  3. 执行命令后,合并后的文件保存在当前目录下。


最近看了一系列英语学习方法的书籍、文章和视频,包括刘晓光的《把你的英语用起来》,郝海龙的《英语自学手册》,github 上的《离谱的英语学习指南》和《A Programmer’s Guide to English》。究其大意都是相通的,总结一下学习方法:

  • 可理解性输入,难度适中,遵循 i + 1 理论
  • 大量的阅读输入,找自己感兴趣的书籍阅读,在阅读中增加词汇量
  • 大量的听力输入,可以使用 每日英语听力 软件
  • 大量的跟读模仿
阅读全文 »


一个开发人员典型的提交流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//新建分支
git checkout develop
git pull origin develop
git checkout -b myfeature

//在分支上开发
git add ***
git commit -m "*****"

//在分支开发过程中合并develop分支到本分支(先把自己的工作commit到本地)
git checkout develop
git pull origin develop
git checkout myfeature
git merge develop

(如果没有冲突,就继续开发,如果有冲突,执行下面过程)
首先在本地解决冲突,再把冲突解决commit
git add ***
git commit -m "*****"

//在分支开发结束,需要将本分支合并到develop分支(先把自己的工作commit到本地)
git checkout develop
git pull origin develop
git merge myfeature

(如果没有冲突,就推送到远程)
git push origin develop
(如果有冲突,则解决冲突,再commit,并推送到远程:)
git add ***
git commit -m "*****"
git push origin develop
阅读全文 »


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 原来的树形结构
const oldTreeData = [
{
name: "总部",
place: "一楼",
children: [
{
name: "财务部",
place: "二楼",
},
{
name: "生产部",
place: "三楼",
},
{
name: "开发部",
place: "三楼",
children: [
{
name: "软件部",
place: "四楼",
children: [
{ name: "后端部", place: "五楼" },
{ name: "前端部", place: "七楼" },
{ name: "技术部", place: "六楼" },
],
},
{
name: "硬件部",
place: "四楼",
children: [
{ name: "DSP部", place: "八楼" },
{ name: "ARM部", place: "二楼" },
{ name: "调试部", place: "三楼" },
],
},
],
},
],
},
];

// 树形结构平铺
function treeDataAdapter(treeData, lastArrayData = []) {
treeData.forEach((item) => {
if (item.children) {
treeDataAdapter(item.children, lastArrayData);
}
const { name, place } = item;
lastArrayData.push({ name, place });
});
return lastArrayData;
}
// 返回平铺的组织结构
var data = treeDataAdapter(oldTreeData);
阅读全文 »
0%