树莓派 设置无线上网 Raspberry Pi wifi

‘树莓派 设置无线上网 Raspberry Pi wifi’ http://www.jianshu.com/p/b42e8d3df449 树莓派 Raspberry Pi 设置无线上网 作者 KK7384 关注2014.12.15 07:00 字数 704 阅读 8124评论 0喜欢 9 一、查看网卡状态是否正常 把无线网卡插到树莓派上,输入命令ifconfig -a查看是否有wlan0的信息,如果有说明网卡状态正常,可以跳过第二步,直接配置无线网络。如果查不到wlan0的信息,则需要安装无线网卡的驱动。 二、查看无线网卡的信息 输入命令dmesg | grep usb查看无线网卡的信息,主要是看制造厂家 (Manufacturer) 。比如,我的网卡信息是 usb 1-1.3: Manufacturer: Realtek 以Realtek为例,安装无线网卡驱动。 如果现在你的树莓派能联网,输入安装命令就可以安装Realtek的驱动了。 首先搜索Realtek驱动: apt-cache search realtek 看到下面信息: firmware-realtek - Binary firmware for Realtek wired and wireless network adapters 安装Realtek驱动: sudo apt-get install firmware-realtek 如果你的树莓派现在不能上网,那么你可以去镜像站点中下载相关驱动。我推荐阿里云的镜像站点,速度比较快。http://mirrors.aliyun.com/raspbian/raspbian/pool/non-free/f/firmware-nonfree 下载firmware-realtek_0.43_all.deb,用winscp上传到树莓派的/tmp目录中。输入命令安装: sudo dpkg -i /tmp/firmware-realtek_0.43_all.deb 三、配置无线网络 用编辑器nano打开interfaces文件 sudo nano /etc/network/interfaces 我的interfaces文件是这样的: auto lo ...

2017-02-23 · 1 min · 179 words · -

autojump

autojump https://linux.cn/article-3401-1.html 在命令行中切换目录是最常用的操作,不过很少有比一遍又一遍重复"cd ls cd ls cd ls ……“更令人沮丧的事情了。如果你不是百分百确定你想要进入的下一个目录的名字,那么你不得不使用ls来确认,然后使用cd来进入你想要进的那一个。所幸的是,现在大量的终端和shell语言提供了强大的自动补全功能来处理该问题。但是,你仍然需要一直疯狂地敲击TAB键来干这事。如果你和我一样懒惰,你一定会对autojump感到惊喜。 autojump 是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处。 oh-my-zsh 自带的插件_z_,和 autojump 实现的功能是一样的,但是不用额外安装,直接在plugins=()里启用就可以了。

2017-02-22 · 1 min · 15 words · -

spring restful, spring boot, maven,gradle

spring restful, spring boot, maven,gradle spring-boot-starter-parent <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.2</version> </parent> 表示当前pom文件从spring-boot-starter-parent继承下来,在spring-boot-starter-parent中提供了很多默认的配置,这些配置可以大大简化我们的开发。 Parent Poms Features 通过继承spring-boot-starter-parent,默认具备了如下功能: Java版本 (Java8) 源码的文件编码方式 (UTF-8) 依赖管理 打包支持 动态识别资源 识别插件配置 识别不同的配置,如:application-dev.properties 和 application-dev.yml 以上继承来的特性有的并非直接继承自spring-boot-starter-parent,而是继承自spring-boot-starter-parent的父级spring-boot-dependencies 需要特别说明的是,application-dev.properties 和 application-dev.yml支持spring风格的占位符(${…​}),但是Maven项目把对占位符的支持改为(@..@),可以通过设置Maven属性resource.delimiter来重置回去。 继承spring-boot-starter-parent后,大大简化了我们的配置,它提供了丰富的常用的默认的依赖的版本定义,我们就不需要再次指定版本号: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> 假设我们需要定制自己的版本号,可以通过下面的方式重写: spring-boot-starter-web <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> Spring Web Starter使用Spring MVC,REST和Tomcat作为默认的嵌入式服务器 Spring Boot还支持另外两个嵌入式服务器: Jetty Server Undertow Server gradle bootRun run with env java -jar xxx.jar --spring.profiles.active=prod https://tengj.github.io/2017/02/26/springboot1/ ...

2017-02-22 · 1 min · 179 words · -

idea maven mvn archetype,generate 速度缓慢问题

idea maven mvn archetype,generate 速度缓慢问题 https://my.oschina.net/u/225373/blog/468035 maven生成项目速度慢的令人发指,都在Generating project in Batch mode等待,Idea状态显示栏还在不行runing,并没有卡死。查看debug信息发现,是maven获取archetype-catalog.xml导致。 (用浏览器打开http://repo1.maven.org/maven2/archetype-catalog.xml,需要等待很长时间才能获取到。) 解决方法: 加上-DarchetypeCatalog=internal 运行参数,archetype-catalog.xml本地获取。 对于intellij idea可以再Runner加上参数。 curl http://repo1.maven.org/maven2/archetype-catalog.xml> .m2/archetype-catalog.xml -DarchetypeCatalog=local

2017-02-22 · 1 min · 21 words · -

agile backlog

agile backlog 积压列表的优先级选择必须权衡以下方面: 客户价值 (解决正确的问题) 业务价值 (产生的收益) 技术价值 (可以促进学习,减少风险,有牢靠的解决方案和智能工作流) 质量价值 (缓解风险) http://www.infoq.com/cn/articles/product-owner-raison?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

2017-02-21 · 1 min · 12 words · -

homelab

homelab 新二级域名 在阿里云控制台添加新域名 等域名生效 drill jenkins.wiloon.com 在 wiloon.com 更新证书加入新域名, ssh aliyun podman stop nginx certbot ssh root@nginx sh /data/cert/cert.sh ssh router vi /etc/hosts /etc/init.d/dnsmasq restart DNS 192.168.50.1 Nginx 192.168.50.130 更新 nginx 在内网有梯子的机器 podman pull nginx:1.27.2 podman save 7f553e8bbc897571642d836b31eaf6ecbe395d7641c2b24291356ed28f3f2bd0>nginx.tar tar zcvf nginx.tar.gz nginx.tar scp nginx.tar.gz aliyun:~

2017-02-20 · 1 min · 45 words · -

ulimit, Linux 下设置最大文件打开数 nofile, nr_open

ulimit, Linux 下设置最大文件打开数 nofile, nr_open ulimit file-max nr_open soft limit hard limit shell 级限制 用户级限制 systemd 的 ulimit 配置 ulimit 是用于获取或者修改 shell 和 shell 创建的进程的 资源限制的一个 linux 内置命令, 是系统调用 setrlimit 的封装. ulimit 控制的是 shell 级的限制 格式 ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] ulimit 参数 -a: 显示当前所有的 limit 信息。 -n: 显示可以打开最大文件描述符的数量。ulimit -n 128: 设置最大可以使用 128 个文件描述符。 -s: 线程栈大小,以 Kbytes 为单位. ulimit – s 512;限制线程栈的大小为 512 Kbytes. 操作系统栈大小 (ulimit -s) : 这个配置只影响进程的初始线程;后续用pthread_create创建的线程都可以指定栈大小。 -H: use the hard resource limit ...

2017-02-20 · 7 min · 1308 words · -

cad 旋转

cad 旋转 旋转命令快捷键: 【RO】 旋转命令使用方法: 可通过输入【RO】回车,也可直接用鼠标点击旋转命令按钮激活旋转命令 选择需要旋转的对象 空格或回车或右击,确定选择对象 确定旋转基点 确定旋转角度 http://www.mfcad.com/cad/874/14136.html

2017-02-18 · 1 min · 11 words · -

archlinux 连接 蓝牙键盘

archlinux 连接 蓝牙键盘 filco 配对 ctrl+alt+fn 忘记已配对设备 connect 长按3秒 #mac of bluetooth keyboard # 00:18:00:3C:A4:C5 bluetoothctl # show help info help # show keyboard info, paired, trusted, connected info 00:18:00:3C:A4:C5 power on devices agent on pair 00:18:00:3C:A4:C5 trust 00:18:00:3C:A4:C5 connect 00:18:00:3C:A4:C5 systemctl start bluetooth https://wiki.archlinux.org/index.php/Bluetooth_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E5.AE.89.E8.A3.85 https://bbs.archlinux.org/viewtopic.php?id=217451

2017-02-17 · 1 min · 46 words · -

MTR/traceroute, 路由跟踪

MTR/traceroute, 路由跟踪 使用 MTR 诊断网络问题 MTR 是一款强大的网络诊断工具, 网络管理员使用 MTR 可以诊断和隔离网络问题,并且为上游 ISP 提供有用的网络状态报告。 MTR 是传统 traceroute 命令的进化版, 并且可以提供强大的数据样本, 因为他集合了 traceroute 和 ping 这两个命令的精华。本文带您深入了解 MTR, 从数据如何生成, 到如果正确理解报告样本并得出相应的结论。 关于网络诊断技术的基本理论请参考 network diagnostics. 如果您怀疑您的 Linux 系统有其他问题,请参考 system diagnostics 。最后,我们假定您已经掌握了 getting started guide (入门指南) 。 网络诊断相关的背景知识 网络诊断工具 例如 ping traceroute mtr 都使用的 “ICMP” 包来测试 Internet 两点之间的网络连接状况。当用户使用 ping 命令 ping 网络上的主机后, ICMP 包将会发送到目的主机,然后在目的主机返回响应。这样,就可以得知本机到目的主机 ICMP 包传输所使用的往返时间。 相对于其他命令仅仅收集传输路径或响应时间,MTR 工具会收集更多的信息,比如 连接状态,连接可用性,以及传输路径中主机的响应性。由于这些额外的信息,我们建议您尽可能完整的展现 Internet 两个主机之间的网络连接信息。接下来我们讲述如何安装 MTR 软件,以及如何看懂这款软件的输出结果。 安装 MTR # debian/ubuntu apt-get update apt-get upgrade apt-get install mtr-tiny # CentOS/Fedora yum update yum install mtr # Arch Linux pacman -Sy pacman -S mtr 使用 mtr 39.156.69.79 mtr -report google.com 如果您的本机使用的 Mac OS X 系统,可以使用 Homebre 或 MacPorts 来安装 MTR。使用 Homebrew 安装 MTR: ...

2017-02-17 · 8 min · 1659 words · -

golang 类/type

golang 类/type //类定义 type Mutex struct { state int32 sema uint32 } //扩展已定义类型 type Num int32 func (num Num) IsBigger(otherNum Num) bool { return num > otherNum } //类方法 type Once struct { m Mutex done uint32 } func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 { defer atomic.StoreUint32(&o.done, 1) f() } } 类声明 ...

2017-02-17 · 1 min · 132 words · -

golang 字符串/string

golang 字符串/string 判断字符串开头 import ( "fmt" "strings" ) func main() { myString := "www.topgoer.com" // Option 1: (Recommended) if strings.HasPrefix(myString, "www") { fmt.Println("Hello to you too") } else { fmt.Println("Goodbye") } } go, string, join func main() { // 将字符串数组 拼接成 字符串 // 参数: 要拼接的数组,拼接的内容 str := strings.Join([]string{`你好`, `世界`}, `,`) // 输出拼接好的字符串 println(str) } package main import "strings" func main(){ a := "hahaha" b := "hehehe" c := strings.Join([]string{a,b},",") println(c) 字符串截取 s := "abcdefg" s = string([]byte(s)[:3]) fmt.Println(s) //得到 "abc" s := "abcdefg" s = string([]byte(s)[3:]) fmt.Println(s) //得到 "efg" s := "12121211122" first3 := s[0:3] last3 := s[len(s)-3:] 字符串比较 fmt.Println("go"=="go") fmt.Println("GO"=="go") fmt.Println(strings.Compare("GO","go")) fmt.Println(strings.Compare("go","go")) fmt.Println(strings.EqualFold("GO","go")) Compare函数,区分大小写,比自建方法"==“的速度要快 ...

2017-02-17 · 1 min · 147 words · -

openvpn

openvpn VPN, Virtual Private Network, 虚拟专用网络 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现, 最早由James Yonan编写 OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现 虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件 (如IE) 向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由. 在OpenVpn中,如果用户访问一个远程的虚拟地址 (属于虚拟网卡配用的地址系列,区别于真实地址) ,则操作系统会通过路由机制将数据包 (TUN模式) 或数据帧 (TAP模式) 发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。 加密 OpenVPN使用OpenSSL库加密数据与控制信息: 它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包 HMAC 功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。[1] 验证 OpenVPN提供了多种身份验证方式, 用以确认参与连接双方的身份,包括: 预享私钥,第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。 OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。 网络 OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端"推送"某些网络配置信息的功能,这些信息包括: IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口: 通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA (Internet Assigned Numbers Authority) 指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。[1] OpenVPN使用通用网络协议 (TCP与UDP) 的特点使它成为 IPsec 等协议的理想替代,尤其是在ISP (Internet service provider) 过滤某些特定VPN协议的情况下。[1] 在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。[1] 安全 OpenVPN与生俱来便具备了许多安全特性: 它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用mlockall以防止敏感数据交换到磁盘。[1] OpenVPN通过PKCS#11支持硬件加密标识,如智能卡。 install #install sudo pacman -S openvpn apt-get install openvpn server create keys pacman -S easy-rsa use Elliptic curve instead of RSA # append line to /etc/easy-rsa/vars set_var EASYRSA_ALGO ec set_var EASYRSA_CURVE secp521r1 set_var EASYRSA_DIGEST "sha512" set_var EASYRSA_NS_SUPPORT "yes" easy-rsa cd /etc/easy-rsa export EASYRSA=$(pwd) export EASYRSA_VARS_FILE=/etc/easy-rsa/vars easyrsa init-pki easyrsa build-ca # new ca certificate file: /etc/easy-rsa/pki/ca.crt scp /etc/easy-rsa/pki/ca.crt foo@hostname-of-openvpn-server:/tmp/ca.crt mv /tmp/ca.crt /etc/openvpn/server/ chown root:openvpn /etc/openvpn/server/ca.crt # install easy-rsa on openvpn server pacman -S easy-rsa easyrsa init-pki easyrsa gen-req pingd nopass cp /etc/easy-rsa/pki/private/pingd.key /etc/openvpn/server/ openvpn --genkey secret /etc/openvpn/server/ta.key # The server and client(s) certificates need to be signed by the CA then transferred back to the OpenVPN server/client(s). cp /etc/easy-rsa/pki/reqs/*.req /tmp scp /tmp/*.req foo@hostname-of-CA:/tmp # on ca server cd /etc/easy-rsa easyrsa import-req /tmp/servername.req servername easyrsa sign-req server servername scp /etc/easy-rsa/pki/issued/*.crt foo@hostname-of-openvpn_server:/tmp mv /tmp/servername.crt /etc/openvpn/server/ chown root:openvpn /etc/openvpn/server/servername.crt client pacman -S easy-rsa use Elliptic curve instead of RSA ... easy-rsa cd /etc/easy-rsa export EASYRSA=$(pwd) export EASYRSA_VARS_FILE=/etc/easy-rsa/vars easyrsa init-pki easyrsa gen-req client1 nopass # sign the certificates cp /etc/easy-rsa/pki/reqs/*.req /tmp # cd /etc/easy-rsa # easyrsa import-req /tmp/servername.req servername # easyrsa import-req /tmp/client1.req client1 # easyrsa sign-req server servername # easyrsa sign-req client client1 config “#”前缀是指定的注释标签。openvpn网站上的示例广泛使用’#‘注释。另外,分号 ‘;’ 用于注释掉单行或单项。 ...

2017-02-17 · 3 min · 615 words · -

socks5 -> http/https proxy, privoxy/cow

‘socks5 -> http/https proxy, privoxy/cow’ curl -L git.io/cow | bash #edit /home/user0/.cow/rc listen = http://127.0.0.1:7777 proxy = socks5://127.0.0.1:1080 #config http/https proxy export http_proxy=http://127.0.0.1:7777 export https_proxy=http://127.0.0.1:7777 sudo pacman -S privoxy edit /etc/privoxy/config forward-socks5 / 127.0.0.1:1080 . listen-address 127.0.0.1:8118 sudo systemctl start privoxy proxychains ProxyChains是Linux和其他Unix下的代理工具。它可以使任何程序通过代理上网, 允许TCP和DNS通过代理隧道。ProxyChains通过一个用户定义的代理列表强制连接指定的应用程序, 直接断开接收方和发送方的连接。 ProxyChains是一个开源Unix/Linux代理工具,能够强制使任何应用的TCP连接使用SOCKS4,SOCKS或者HTTP(S)代理进行连接。 #Arch Linux sudo pacman -S proxychains-ng #Debian/Ubuntu apt-get install proxychains #Mac OS X brew install proxychains-ng # 用户级配置文件 ~/.proxychains/proxychains.conf # 系统级配置文件 vim /etc/proxychains.conf # content [ProxyList] socks5 192.168.50.205 1080 http 127.0.0.1 4321 proxychains looks for config file in following order: ...

2017-02-15 · 1 min · 190 words · -

linux 字体引擎

’linux 字体引擎' linux下主要使用xtt freetype xfs xft这四种字体引擎,以下是这四种字体引擎的区别, xtt, freetype, xfs, xft等的区别 X Window是所谓client-server结构,这里的server管显示(输出)、键盘和鼠标(输入)部分,而client则是你正在用的程序,比如编辑器。Server收集键盘和鼠标的输入,送到编辑器这一client,编辑器经过处理后,回过来再让server去显示一些字到屏幕上,来回折腾。 怎样显示一个字呢? 一个字实际上就是一个小图,如果小图上的点非黑即白,就称为黑白点阵;如果小图上的点可以有不同的亮度甚至颜色,则称为AA点阵。每个字,也就是每个小图都有固定的编号,编辑器(client)可以只告诉server某个编号,server根据该编号去找出对应的小图,这种方案就是所谓的server side font,如FreeType,X-TrueType等backend就属此类;如果编辑器自己去找小图,干脆把小图送给server去显示,这种方案就是所谓client side font,Xft属这一类。 server side font FreeType backend: 即XF86Config中的freetype模块 X-TrueType backend: 即XF86Config中的xtt模块 client side font Xft: 设置文件是fonts.conf 还有一类,xfs,跟server side font一样,client把字编码传给server,但server并不直接从字库中读出对应该编码的小图,而是把编码再传给另外的所谓font server,由font server去字库找出对应的图,返回给X server去显示,姑且将这种方式称为font server font: font server font xfs: 设置文件是X11/fs/config 不管是哪一类,最终都要去字库文件读出对应编码的小图,至少对TrueType格式的字库文件而言,xtt也好,freetype也好,Xft也好,几乎都用到了FreeType这一字库engine,虽然xtt没人继续改进,还是用FreeType 1,别人都改用FreeType 2了。正因为大家都用FreeType字库engine,使得xtt,freetype,Xft这些名字容易弄混,让人头大。解决的办法很简单:不要再去管什么xtt,不要再去管什么freetype,不要再去管什么xfs:只要弄清Xft就够了。 X字库设置必读: Juliusz Chroboczek的Fonts in XFree86 http://www.xfree86.org/~dawes/4.3.0/fonts.html 理论知识 freetype分两个主要阶段的版本: 1.x和2.x。Freetype 是开源字体渲染引擎,并不只为X设计。它的功能就是读取Truetype字体信息,如大小、分辨率、编码等,然后渲染成所需的位图数据输出。2.x与1.x 相比最大的差别就是加入了抗锯齿功能。 其中freetype和xtt是X的内部模块,都是使用freetype1来渲染字体。 xfs以服务的形式出现,也可以作为X的内部模块,使用freetype2来渲染字体。 xft也属于一个外部服务程序,以动态链接的形式提供,也就是说在需要的时候才被加载,同时也只有xft支持antialias。xft使用FontConfig来自定义和选择字体。 freetype、xtt和xfs可在X下用xlsfonts列出当前可用的X核心字体,xft可用fc-list列举当前可用字体。 这么多引擎到底用哪个好呢?freetype推荐使用2.x版本,所以如果当你使用的程序不支持xft的时候最好使用xfs。而对于中文的支持其实xtt的效果最好,因为对于小字体用函数描述法算出来的中文字体效果不能让人满意,所以很多中文字体公司就在Truetype字体里嵌入了位图字体。这些位图字体需要用特殊的方式读出来,所有的引擎中就只有xtt能做到这一点。但xtt有个问题就是速度太慢,反正我使用debian时使用xtt的时候使用 SimSun字体很慢的,但愿是我的配置有问题吧。当然了,能使用xft的时候一定要使用xft哦,xft显示出来的字体确实很漂亮,尤其是使用 Microsoft的Tahoma字体效果特别明显,你可以用fvwm配置着试一下,使用X核心字体-microsoft-tahoma-medium- r-normal-12-*-*-*-*-*-iso8859-1,然后再使用FontConfig来渲染试下xft:Tahoma:Medium: Size=12:encoding=iso8859-1,看看效果就知道了,gtk2和kde目前都采用xft来显示字体。 配置 freetype 和xtt的配置很简单,只要在/etc/X11/XF86Config-4(XFree86)或/etc/X11/xorg.conf(xorg)文件中加入FontPath 您的字体目录然后加载相应的引擎模块即可,注意的一点是freetype和xtt都是用freetype1来渲染字体不能同时使用的,只能加载其中一个模块。添加新字体时只需要在你新加的字体目录中创建fonts.dir和fonts.scale文件即可,创建方法可使用mkfontdir和 mkfontscale或者ttmkfdir,据说mkfontdir和mkfontscale创建的fonts.dir和fonts.scale有问题,但我使用时好象没遇到过问题,如果不行的话就用ttmkfdir创建fonts.scale然后再复制一个fonts.scale为 fonts.dir,具体操作可以看看man pages,进入你新建的字体目录下执行mkfontdir和mkfontscale或者执行ttmkfdir && cp fonts.scale fonts.dir即可。 (注: 如果你不知道将FontPath和LoadModule加在什么地方的话就别用X了哈) ...

2017-02-15 · 1 min · 122 words · -

FreeType

FreeType FreeType是一个免费且开源的,可移植的字体引擎,有许多程序包括游戏使用它作为字体渲染的库 FreeType is a freely available software library to render fonts.

2017-02-15 · 1 min · 12 words · -

redis sort set, 有序集, zset

redis sort set, 有序集, zset sort set, zset Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的 在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然非常高效。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模会非常困难。 相关命令列表 命令原型,时间复杂度,命令描述,返回值 添加, ZADD zADD key score member [score] [member] 将一个或多个member元素及其score值加入到有序集key当中。 O(log(N)), 时间复杂度中的N表示Sorted-Sets中成员的数量。 添加参数中指定的所有成员及其分数到指定key的Sorted-Set中,在该命令中我们可以指定多组score/member作为参数。如果在添加时参数中的某一成员已经存在,该命令将更新此成员的分数为新值,同时再将该成员基于新值重新排序。如果键不存在,该命令将为该键创建一个新的Sorted-Sets Value,并将score/member对插入其中。如果该键已经存在,但是与其关联的Value不是Sorted-Sets类型,相关的错误信息将被返回。 返回值: 本次操作实际插入的成员数量。 分数的范围 Redis的Sorted Set的分数范围从-(2^53)到+(2^53)。或者说是-9007199254740992 到 9007199254740992。更大的整数在内部用指数表示。 删除, ZREM ZREM key member [member …] 移除有序集key中的一个或多个成员,不存在的成员将被忽略。 O(M log(N)) 时间复杂度中N表示Sorted-Set中成员的数量,M则表示被删除的成员数量。该命令将移除参数中指定的成员,其中不存在的成员将被忽略。如果与该Key关联的Value不是Sorted-Set,相应的错误信息将被返回。 返回值: 实际被删除的成员数量。 ZCARD, 计算集合中元素的数量 ZCARD key 返回有序集key的基数。 O(1) 成员数量。获取与该Key相关联的Sorted-Sets中包含的成员数量。 返回值: 返回Sorted-Sets中的成员数量,如果该Key不存在,返回0。 ZCOUNT,score值在min和max之间的成员数量 ZCOUNT key min max 返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员。 O(log(N)+M) 时间复杂度中的N表示Sorted-Sets中成员的数量,M则表示min和max之间元素的数量。该命令用于获取分数(score)在min和max之间的成员数量。针对min和max参数需要额外说明的是,-inf和+inf分别表示Sorted-Sets中分数的最高值和最低值。缺省情况下,min和max表示的范围是闭区间范围,即min <= score <= max内的成员将被返回。然而我们可以通过在min和max的前面添加"(“字符来表示开区间,如(min max表示min < score <= max,而(min (max表示min < score < max。 ...

2017-02-13 · 2 min · 308 words · -

设计模式, Design Pattern, Front Controller Pattern

设计模式, Design Pattern, Front Controller Pattern http://www.cnblogs.com/TonyYPZhang/p/5516192.html Front Controller Pattern, 即前端控制器模式,用于集中化用户请求,使得所有请求都经过同一个前端控制器处理,处理内容有身份验证、权限验证、记录和追踪请求等,处理后再交由分发器把请求分发到对于的处理者。 前端控制器模式主要涉及下面三个角色 前端控制器(Front Controller) - 一个处理器用于处理全部的用户请求 分发器(Dispatcher) - 把处理后的请求分发到对于的业务处理程序 视图(View) - 真正处理请求业务程序 下面是前端控制器的一个简单案例。 HomeView, StudentView 分别是具体业务处理程序。Dispatcher 用于把请求分发到对于的 View 中。FrontController 是所有用户请求的入口,进行身份验证、权限验证、记录或追踪请求日志。FrontControllerDemo 演示前端控制器模式。 代码实现 HomeView, StudentView 提供真正的业务处理逻辑 public class HomeView { public void show(){ System.out.println(“show Home view “); } } public class StudentView { public void show(){ System.out.println(“show student view “); } } Dispatcher 分发用户的请求到对应业务处理程序 public class Dispatcher { private StudentView studentView; private HomeView homeView; public Dispatcher(){ homeView = new HomeView(); ...

2017-02-12 · 1 min · 170 words · -

parallel command

parallel command https://gist.github.com/spidersea/8110433 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作。数据专家们,我是在对你们说。你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核。 借用卡通人物Cartman的话,“如何我能使用这些内核”? 要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel 命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作,当然,这还要借助很少用到的–pipes 参数(也叫做–spreadstdin)。这样,你的负载就会平均分配到各CPU上,真的。 BZIP2 bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我们有办法解决这问题。 以前的做法: cat bigfile.bin | bzip2 –best > compressedfile.bz2 现在这样: cat bigfile.bin | parallel –pipe –recend ’’ -k bzip2 –best > compressedfile.bz2 尤其是针对bzip2,GNU parallel在多核CPU上是超级的快。你一不留神,它就执行完成了。 GREP 如果你有一个非常大的文本文件,以前你可能会这样: grep pattern bigfile.txt 现在你可以这样: cat bigfile.txt | parallel –pipe grep ‘pattern’ 或者这样: cat bigfile.txt | parallel –block 10M –pipe grep ‘pattern’ 这第二种用法使用了 –block 10M参数,这是说每个内核处理1千万行——你可以用这个参数来调整每个CUP内核处理多少行数据。 AWK ...

2017-02-11 · 1 min · 139 words · -

探活

探活 https://www.51cto.com/article/699046.html

2017-02-10 · 1 min · 2 words · -