Git笔记

还原子模块工作树的修改

问题现象:TortoiseGit日志窗口的工作树变更显示子模块已修改。右击该子模块,还原,但修改仍然存在。

修复方法:

git submodule update --init

如何查看提交中是否包含重命名或复制?

$ git log --name-status -M -C -1  
commit c04ecb6edd602a8463b5239a5fde900b2b3 (HEAD -> 256818)
Author: gqqnbig <gqqnbig@gmail.com>
Date: Wed Nov 15 10:45:17[......]

继续阅读

WordPress屏蔽垃圾评论

对需要root权限的指令添加sudo命令

屏蔽IP

屏蔽IP并在触发规则时写入日志

{{sudoText}}ufw insert 1 deny log from 84.17.58.0/24
{{sudoText}}ufw reload

ufw的大部分规则在/etc/ufw/user.rules。

new Vue({
el: ‘#vue-app’,
data: {
sudoText:””,
},
created: function () { checked(this) },
methods: {
check[……]

继续阅读

126. Word Ladder II

LeetCode是用C# release模式运行的。

解法1:

使用队列进行广度优先搜索,统一在Dequeue后进行终止条件判断。

缺点是生成下一个状态,enqueue前,没有检查是不是解。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace LeetCode
{
	public class WordLadder2
	{
		public IList<IList<string>&g[......]

继续阅读

.NET测试框架测评

最近用了xUnit.net,结构简洁。用[Fact]标记无参测试方法,用[Theory]标记有参测试方法并用[InlineData]提供参数。而且,xUnit.net可以使用静态类作为测试类。这使得编写简洁的测试代码成为可能。

美中不足是xUnit的断言除了Assert.True()Assert.False()以外,都不接受自定义错误消息。当在持续集成服务器上出错,且本地无法重现时,根本无法知晓到底具体的出错情况。

xUnit.net团队坚持认为不应添加自定义消息。[1]

文档不丰富。

MS Test (v1)

MS Test和NUnit[……]

继续阅读

C#与VB语言特性比较

C#VB备注

类型名与成员名相同[1]✕✓

多行注释✓✕使用多行注释符号可在版本控制系统中显示较少的修改。

多条件的for语句✓✕

三元条件运算符 a?b:c✓✕

null合并运算符a??1✓✕

null条件运算符a?.F()✓✕

在比较语句中赋值if((a=b)==null)✓✕

连续赋值int a,b;a = b = 1;✓✕

对Lambda表达式推断类型Dim x = Function(n As Integer) n + 1✕✓

方法参数的out、ref关键字声明数[……]

继续阅读

垃圾的Java包名规范!

Java或Android包名,按照传统,写成反转的域名形式。网上对这种写法的好处说得头头是道,但其实是有问题的。

“包名约定是避免冲突”
“Sun 推荐的避免包名冲突方法:把开发组织的域名倒过来写。”[1]

那个人没有域名怎么办?有的人说用personal.gqqnbig[1](这个合理的问题还被stackexchange的傻逼们关闭了),但是我如果下次注册了一个域名,是不是就要改用域名作包名了?那我两次开发的软件,包名不同,是不是就不一致了,别人是不是会被搞混了?

还有人说包名要从大到小排列。如果展开一个jar文件,会看到com、org、n[……]

继续阅读

Android OS提升编译速度

make不需要加参数-j,CPU已经到达100%。

编译时,我remmina远程连接到另一台电脑工作,remmina CPU占用约1%,我认为其影响可以忽略。

测试流程

  1. 删除out目录,删除ccache目录。
  2. 运行make,计算编译时间
  3. 计算启动操作系统到桌面的时间。对于模拟机,运行emulator命令。对于真机,运行time build/make/flash.sh
  4. 检出ART项目的master分支
  5. 运行make,计算编译时间
  6. 坚持ART项目的debug分支
  7. 运行make,计算编译时间
  8. 计算启动操作系统到桌面的时间。对于模拟机,运行emul[......]

    继续阅读

Android应用权限源码分析

问题症状

void FieldInstrumentationListener::OpenPerfLog() {

  std::string pid_str = std::to_string(getpid());
  time_t n = time(nullptr);
  struct tm* local = localtime(&n);
  char strTime[80];
  strftime(strTime, 80, "%Y-%m-%d %H-%M-%S", local);
  std::string perf_filename = std::string(kLog[......]

继续阅读