Fork me on GitHub
一共有 61 篇文章,分页:1 / 13

shell按行分割并转为objc字符串

以下脚本可以作为xcode项目编译脚本使用,用于将配置文件嵌入到oc代码里面

output=''
SAVEIFS=$IFS
IFS=$'\n' #解决下面循环遇到空格问题
# 去除注释和空行,并把/r/n换为/n
for line in $(grep -v "^#" ../conf/sdk.conf | grep -v "^$" | sed "s/\\r//g")
do
    output="${output}@\"${line}\\\n\"\n"
done
IFS=$SAVEIFS

cat > ./SDKConf.h <<EOF
// 当前文件由脚本自动生成,请勿编辑或者提交.

#import <Foundation/Foundation.h>

#ifndef SDKConf_h
#define SDKConf_h

NSString *getSDKConf(void){
EOF

echo "return ${output};" >> ./SDKConf.h

cat >> ./SDKConf.h <<EOF

}

#endif /* sdkconf_h */

EOF

GO语言的异常处理机制

GO异常一直被很多人认为不够优雅,但我却觉得这种做法得心应手,少写很多模版代码,如下举例:

  • 当你认为该异常不会致命可以被允许存在时:

res,err := instance.Bind(...)
if err != nil {
  res = instanceNew()
}
  • 当你认为该异常是致命的,需要退出时:

res := instance.MustBind(...)

如何安全保存用户密码?

安全保存用户密码的几个段位:

  • 青铜:直接保存用户密码明文

  • 白银:将用户密码进行一次md5后保存

  • 黄金:将用户密码进行两次md5后保存

  • 铂金:将用户密码+一个全局key进行两次md5后保存

  • 钻石:注册时给每个用户保存不一样的key,用这个key+用户密码进行sha2后保存

那么SQLboy,你在哪个段位?

CSS3 Flexbox 网格布局 / Grid System 的一个简单实现


/*less*/

@gap: 10px;  /*空隙*/

.grid {
  box-sizing: border-box;
  background-color: #eee;
  display: flex;
  flex-wrap: wrap;
  padding: @gap/2;
  &>* {
    box-sizing: border-box;
    margin: @gap/2;
  }
  .full {
    flex: 0 0 calc(100% - @gap);
  }
  .half {
    flex: 0 0 calc(50% - @gap);
   }
  .third {
    flex: 0 0 calc(33.33333% - @gap);
  }
  .two-third {
    flex: 0 0 calc(66.66666% - @gap);
  }
  .fourth {
    flex: 0 0 calc(25% - @gap);
  }
}

事件机制详解

事件流

当用户鼠标点击或者程序主动触发都会产生事件,比如用户点击了网页,那这个过程到底发生了什么?

graph LR 用户-->鼠标 鼠标-->操作系统 操作系统-->浏览器 浏览器-->网页

此时网页已经知道了用户点击了鼠标,那么首先它需要知道当前鼠标指针所在的屏幕坐标screenX,screenY,这个可以通过操作系统 API 得到

  • 捕获/碰撞检测

得到屏幕坐标之后,接下来需要知道的就是用户到底点了网页上的具体哪个元素,我们知道网页内所有元素是一颗 dom 树,可以这样理解,渲染到屏幕上就是一个一个层次交叠的方块,每个元素都有自己的坐标xy和宽高这个信息,其中坐标 xy 可以映射为屏幕上的坐标 xy,我们先把这个信息称之为bound,代表了该元素在屏幕上的边界信息

body {x:0,y:0,w:800,h:250} div.wrap {x:50,y:50,w:500,h:150} div.content {x:95,y:140,w:400,h:80}

此时浏览器会从树的根部遍历整棵树,把所有bound包含了screenX,screenY的元素都找出来,假设上图的红点就是我们的点击位置,可以想象为一颗子弹从屏幕外射向屏幕里面,那么我们得到三个元素都和这个子弹发生了碰撞:body > div.wrap > div.content,这个过程称之为捕获阶段

阅读全文 »»