移植openssh至arm9嵌入式开发板

同学考研,买了块stmicroelectronic的arm9开发板没时间玩儿,就借给奶牛玩儿了,昨晚开始折腾,先从移植开始,最开始折腾的axel,比较容易移植。之后的今天就开始搞ssh的移植了,选择的openssh,从网上查了一些教程,虽然他们也写了也总结了,但是问题依旧是存在滴。好吧,奶牛就把自己做的总结下吧。 首先说移植的目的:有了ssh开机自动启动,就不用串口线来操作开发板了,可以节省很多时间,特别是文件传输的缓慢实在无法忍受。 移植过程: 下载相关源码: openssh:http://mirror.esc7.net/pub/OpenBSD/OpenSSH/portable/openssh-6.1p1.tar.gz openssl:http://www.openssl.org/source/openssl-1.0.1c.tar.gz zlib:http://zlib.net/zlib-1.2.7.tar.gz 然后配置好交叉编译工具

  1. mkdir source package 
  2. mkdir package/zlib 
  3. mkdir package/openssl 
  4. mv openssh-6.p1.tar.gz openssl-1.0.1c.tar.gz zlib-1.2.7.tar.gz ./source 
  5. cd source 
  6. tar xzvf openssh-6.p1.tar.gz 
  7. tar xzvf openssl-1.0.1c.tar.gz 
  8. tar xzvf zlib-1.2.7.tar.gz 

1.编译zlib

  1. ./configure --prefix=/home/nenew/package/zlib 

修改Makefile

  1. CC=arm-linux-gcc 
  2. AR=arm-linux-ar 
  3. CPP =arm-linux-gcc -E 
  4. LDSHARED=arm-linux-gcc 

就是讲gcc ar用arm-linux-gcc arm-linux-ar来代替

  1. make 
  2. make install 

2.编译openssl

  1. ./Configure --prefix=/home/nenew/package/openssl os/compiler:arm-linux-gcc 

这里可以直接指定交叉编译器,如果想知道哪些编译文件可以直接支持的话,一般./configure –help就可以看到说明

  1. make 
  2. make install 

3.编译openssh

  1. ./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/home/nenew/package/zlib --with-ssl-dir=/home/nenew/package/openssl --disable-etc-default-login --disable-strip CC=arm-linux-gcc AR=arm-linux-ar 

指定好了prefix为安装的目标目录,zlib与ssl的路径也就是我们刚才的安装路径,最后指定交叉编译器

  1. make 

这里并不安装,理由是不需要安装,安装到本机也无法执行,因为我们是交叉编译,你也许会问,为什么不直接换个预置安装目录来安装呢?如果不动手做你是不会知道的,sshd启动的时候会去安装目录下的etc找配置文件滴,所以这个目录不要随便指定,网上那些教程很多这里的路径都是有问题的。 编译工作至此结束,可以开始移植openssh了。

  1. mkdir -p usr/local/openssh 
  2. cd usr/local/openssh 
  3. mkdir etc bin 
  4. cd ../../../ 
  5. cp scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan ./usr/local/openssh/bin 
  6. cp sshd_config ssh_config ./usr/local/openssh/etc 
  7. mkdir sbin bin 
  8. cp sshd ./sbin 
  9. cd bin 
  10. ln -s /usr/local/openssh/bin/scp 
  11. ln -s /usr/local/openssh/bin/sftp 
  12. ln -s /usr/local/openssh/bin/ssh 
  13. ln -s /usr/local/openssh/bin/ssh-add 
  14. ln -s /usr/local/openssh/bin/ssh-agent 
  15. ln -s /usr/local/openssh/bin/ssh-keygen 
  16. ln -s /usr/local/openssh/bin/ssh-keyscan 
  17. cd .. 
  18. mkdir -p usr/local/libexec 
  19. cp sftp-server  ssh-keysign usr/local/libexec 
  20. mkdir ../final 
  21. cp -r bin sbin usr ../final 
  22. cd ../final 
  23. tar czvf openssh.tgz ./ 

目录结构大体如下: openssh openssh移植 这就把需要拷贝的文件都准备好了,传到开发板的目录下,然后展开到/根。 这时候ssh并不能运行,还需要修改passwd与group文件,位置在/etc下,将sshd用户添加上。 passwd照着模样修改: sshd::15:50:::/bin/sh group照着模样修改: sshd:*:50: 这里的两个50要对应,是组的编号

  1. mkdir -p /var/run/sshd

然后就是配置ssh key了。

  1. cd /usr/local/openssh/etc 
  2. ssh-keygen -t rsa1 -f ssh_host_key -N "" 
  3. ssh-keygen -t rsa -f ssh_host_rsa_key -N "" 
  4. ssh-keygen -t dsa -f ssh_host_dsa_key -N "" 
  5. ssh-keygen -t ecdrsa -f ssh_host_ecdsa_key -N "" 

现在执行/sbin/sshd应该就可以正常启动了。 如果想自动启动需要增加启动脚本与启动项。 启动脚本位置:/etc/rc.d/init.d/ 启动项配置文件:/etc/init.d/rcS 如何修改可以自己参照里面的实例。 至此就已经完成了移植工作了。ssh可以正常链接。对了,这里建议修改sshd_config哦,把允许root登录与空密码选项打开,因为可以方便,这个不是服务器,不需要太高的安全级别。

 

 
顺丰快递的桌面版软件用户体验那叫差劲儿

 

先说密码,竟然注册密码还没登录就提示必须更换密码,简直就是一坑。

登录之后下单完成后,订单也取货了,结果查询的时候竟然没了,还要手动输入订单号。

界面啥的就不多说了,烦人的是每次都提示完善个人信息,没用过这么烂的桌面软件,顺丰的印象哇,大打折扣。

基于Linux的SteamOS即将来袭,打造以视听娱乐为主的免费操作系统

 

说到Steam平台,游戏玩家应该都不会太陌生,是的,Steam就是Valve公司推的游戏对战平台,并由BT之父全力打造,Steam近日发出公告说SteamOS也即将发布,并且永久免费,在steam的官网也有了相应的介绍。

奶牛把官网的一些介绍跟大家分享下

1.SteamOS是基于Linux的操作系统,可想而知,可定制度应该比较大,既然是系统,那么可玩儿性必然不错,然后我们也可以port上很多自己需要的应用什么的,为啥这么做,继续往下看。

2.SteamOS主要是为了家庭的液晶大屏显示器来推的,现在家庭的电视越来越大,光看个电视有点儿忒浪费啦,当然,如果你有其它游戏机另当别论,如果没有的话,把你的电脑装个SteamOS然后直接HDMI到大屏显示器上就是极好的选择,那样子,看个电影玩儿个游戏听个歌儿神马的都会非常理想。

3.SteamOS的游戏有多少能原生支持呢?对于Steam For Linux的用户,已经有不少游戏可以进行娱乐了,虽然奶牛一直在等CS GO原生到steam for linux上,可是好久了都没有消息,不过SteamOS可以让我们在Linux机器上玩儿windows或者mac系统上的游戏,是通过局域网进行连接的,也就是说要先把你的windows或者mac启动后,通过SteamOS就可以尽享全部的游戏了,当然,奶牛建议您还是用网线吧,如果无线路由不给力,那就玩儿不尽兴了。这点上跟那个远程控制的感觉差不多,不知道具体性能到底如何,官网上说延迟有特别处理过,相信会在一个比较可接受的范围内。

4.家庭分享,在推出后steam的游戏是可以跟好友分享的,而且游戏进度会保存在网络的steam云空间上,所以你可以有自己的游戏进度,但是,两个人没法同时玩儿是真的,如果你想一直玩儿那么你就只能买一个copy了,这点是很好的,因为好多游戏完全可以分享给好友,比如自己玩儿通关的那种,可以省出一部分费用来。

5.音乐,电视,电影等服务也会陆续跟上(我觉得还是port上个firefox哇chrome神马的来得爽快) 

 

官方的介绍直击:http://store.steampowered.com/livingroom/SteamOS/

流式网格布局宽度控制的处理到响应式布局

 

最近写了个小企业站,使用的是BootStrap的fluid layout流式布局,自己的笔记本分辨率是1333×768的,所以页面设计在本机测试没什么问题,但是交付的时候发现人家说在小分辨率上太难看了,然后就得解决,其实说来也简单,就直接用min-width来作控制即可。最简单的方案就是在css中这样子设置

  1. html,body{ 
  2.     min-width:1333px

这样子处理完成后,可以保证页面的最小宽度为1333px,理论上页面就不会走形了,而这个min-width是css2的,所以兼容性肯定也可以保证。但是,从这里,可以引申联想到一些设计时候需要注意的问题。

1.低分辨率的设备访问时候,是否可以根据分辨率自适而不是单纯的用最小宽度来控制。

2.对于移动设备的访问时候,是否可以根据不同的分辨率有不同的排版甚至部分内容的显示隐藏控制。

好吧,响应式,对响应式设计。

默认的BootStrap是没有加入响应式的css的,需要手动引用,官方doc中是这样子描述的

  1. Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <head> of your document. 
  2. If you've compiled Bootstrap from the Customize page, you need only include the meta tag. 
  3.  
  4.     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  5.     <link href="assets/css/bootstrap-responsive.css" rel="stylesheet"> 
  6.  
  7. Heads up! Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. 
  8. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed. 

就是说,需要手动引用两行代码到head标签中。第二行引用就不说了,是引用的响应式的css文件,第一行引用需要说下,这是对viewport的说明。宽度与设备的宽度相适应,缩放默认比例为1。当然content还可以有其它内容

  1. width:viewport 的宽度,可以指定为一个像素值,如:600,或者为特殊的值,如:device-width (设备的宽度)。 
  2. height:viewport的高度。 
  3. initial-scale:初始缩放比例,即当浏览器第一次加载页面时的缩放比例。 
  4. maximum-scale:允许浏览者缩放到的最大比例,一般设为1.0。 
  5. minimum-scale:允许浏览者缩放到的最小比例,一般设为1.0。 
  6. user-scalable:浏览者是否可以手动缩放,yes或no。  

这样子就引入了BootStrap的响应式css了。到了这里还没有完,我们应该去关注下这个响应式的css是怎么具体实现的响应式功能。打开css文件后你会发现最大的不同是该css文件中引用了很多@media,对,这就是Media Queries啦,Media Queries也是css3的一个重要功能,它提供了对不同的设备分辨率进行适配的功能。

Media Queries的格式如下:

  1. @media 设备类型 and (设备特性) { 样式代码 } 

其中的设备类型有:

  1. 1、all:所有设备 
  2. 2、screen :电脑显示器 
  3. 3、print:打印用纸或打印预览视图 
  4. 4、handheld:便携设备 
  5. 5、tv:电视机类型的设备 
  6. 6、speech:语意和音频盒成器 
  7. 7、braille:盲人用点字法触觉回馈设备 
  8. 8、embossed:盲文打印机 
  9. 9、projection:各种投影设备 
  10. 10、tty:使用固定密度字母栅格的媒介,比如电传打字机和终端 

然后就是设备特性了,这个设备特性跟viewport很相似

  1. 1、width:浏览器宽度 
  2. 2、height:浏览器高度 
  3. 3、device-width:设备屏幕分辨率的宽度值 
  4. 4、device-height:设备屏幕分辨率的高度值 
  5. 5、orientation:浏览器窗口的方向纵向还是横向,当窗口的高度值大于等于宽度时该特性值为portrait,否则为landscape。 
  6. 6、aspect-ratio:比例值,浏览器的纵横比. 
  7. 7、device-aspect-ratio:比例值,屏幕的纵横比. 
  8. 8、color:设备使用多少位的颜色值,如果不是彩色设备,值为0 
  9. 9、color-index:色彩表的色彩数 
  10. 10、monochrome:单色帧缓冲器每个像素的字节 
  11. 11、resolution:分辨率值,设备分辨率值 
  12. 12、scan:电视机类型设备扫描方式,progressive或interlace 
  13. 13、grid:只能指定两个值0或1 

其中呢,设备类型是可以忽略掉不必须写的,默认应该是all。像BootStrap的响应式css中就是用如下的格式来进行css定义的

 

  1. /* Large desktop */ 
  2. @media (min-width1200px) { ... } 
  3.   
  4. /* Portrait tablet to landscape and desktop */ 
  5. @media (min-width768px) and (max-width979px) { ... } 
  6.   
  7. /* Landscape phone to portrait tablet */ 
  8. @media (max-width767px) { ... } 
  9.   
  10. /* Landscape phones and down */ 
  11. @media (max-width480px) { ... } 

如果需要对范围进行一个界定的话可以使用and关键词。这样子就可以完成对不同的分辨率的设备进行单独的布局设置调整了。在BootStrap中还有一点是比较不错的,它支持.visible-phone、.visible-tablet、.visible-desktop、.hidden-phone、.hidden-tablet、.hidden-desktop这几个属性来对不同的设备进行定义是否显示某些模块。

最近要是有空就写个小响应式的demo玩儿玩儿~~~酱说我的文章分类有点儿乱,其实,我也是这么觉得的,很多事儿都该条理下了~

用七牛云储存作CDN提升网站加载速度

 

最近写了一个小型静态企业站,为了测试方便就直接用了七牛云储存,因为是静态页面,所以所有的页面文件素材都放七牛上就可以了,页面的载入速度还是比较理想的,比直接用国内主机应该要好一些,至少不会宕机吧。今天咱就说说这两年开始流行的CDN。

以前也用过cloudflare、CDNZZ的产品,对于国外主机的站点还是有一定效果的。CDN通过抓取全站的静态资源,当访问者发出DNS请求的时候,cdn的dns服务器就对请求的资源进行相应的线路选择,线路优化后加载速度就会得到一定的提升。作为静态页面来说,除去.html文件的加载,剩下的就是加载css、js以及图片资源了。其实,如果直接不使用CDN的话,将css、js以及图片资源都放在譬如七牛云储存这样的地方也是可以的,只要将这些资源设置为外链的方式即可,同样可以起到很好的作用。

引用外部资源必然就需要引用外部的域名,这个可能会增加一个域名的解析时间,奶牛以前的做法是把所有的js资源都置在本地,好处是不用害怕网络不连通造成的网站页面走形。现在随着云储存的发展,完全可以把这些资源置于外部储存来解决。而且浏览器的并发现在也都蛮不错的,基本上并发出去对小型的静态页面就可以很快的抓取回所有内容。

再说说七牛,七牛的云储存在路径方面还是挺新颖的,因为貌似就没有路径的概念,只是把资源作为整体,用key value的方式进行储存,使用命名中带有/来作为分割目录。感兴趣的朋友可以测试下,并且七牛有同步的程序,配置好conf就直接用同步来放置静态页面即可。七牛每月送10G的流量,这个对于普通的静态资源来说,流量也不算小了,所以今天推荐下。

点此免费注册七牛云储存

 

JavaScript操作浏览器Cookie

 

最近在构思一个企业站建设的中英文页面问题,想到双语,我觉得两种方法实现起来比较好,一种是ajax直接把数据调用过来,但是对于有很多个div块儿的像首页这种的页面的话,可能要有几个ajax请求,所以,我觉得还是使用预先在页面的html中填写后通过cookie来控制比较方便。

使用cookie定义一个language的项,使用cn/en来区分语言,在页面的class中添加cn/en作为区分中文英文的标志,这样子,需要中文英文切换的时候,直接调用jQuery就可以方便的搞定了。

  1. $('.cn').hide(); //关闭中文 
  2. $('.en').show(); //开启英文 
  3. $('.en').hide(); //关闭英文 
  4. $('.cn').show(); //开启中文 

默认情况下显示中文,在页面载入完成后对页面进行cookie的判断,判断是否有定义,如果没有定义就不管了,如果有定义language项,那么就通过js控制启用cookie记录的语言。当页面浏览的时候,监视页面的语言选择按钮,这样子,在切换语言的同时将对应的cookie记录下来,并设置一个较为长久的过期时限即可。对于cookie的操作呢,使用js的document.cookie也可,也可以使用轻量级封装的类库jquery.cookie,当然咯,还是类库方便一些,通过api直接查直接用,但是对于cookie的理解还需要知道两点的:

  1. cookie默认是以session为周期的,会话结束,cookie亦失效。 
  2. cookie可以设置过期日期的(常用的记住密码就是用这个实现) 
  3. cookie的删除操作其实就是将cookie的过期日期设置在过去,然后cookie就自动失效删除了 

剩下的就不多说了,直接去https://github.com/nenew/jquery-cookie 拿类库来用吧,要不复杂结构的cookie手动拆析分离太麻烦了。

暑假快结束的节奏哇

 

首先我得承认,我老大不小了。虽然才刚大学毕业。

第二个,工作已经基本落实。不要问我在哪儿工作,干什么工作,我自己都不知道是什么工作呢,反正估计跟我的老本行计算机或者网络相关的行业距离较远吧,不过也没啥不好的,至少现阶段看着比较稳定,可以有正常的作息了,可以不用每天对着电脑,可以调节一下自己的身体了,让自己健康一些,现在很明显的亚健康状态。

第三,最近还不算太忙,只是得看驾照考试的科目1,然后最近估计就会通知什么时候上班,本来还打算自己接点儿活儿什么的充实一下暑假的,现在看来算了吧。PHP又是只看了个开头,又没看下去,《Android应用开发攻略》连头都没开好就扔那儿了。说好的做个设计师的项目也没落实,现在酱的节奏跟我有些不一致哇,然后我的geekrss.com也是一直没做,好吧,我都在干什么哇这几天。

最近很喜欢steam平台,特别是那个market,可以搞一搞,搞好了以后买游戏都可以不用花钱了,可以通过market倒卖赚钱,不过steam的税太高了,15%呢,有点儿纠结,前阵子上的东西都因为summer holiday促销给挤压上了,各种被压价。今天入了个Portal2 (传送门2),感觉游戏设计确实很有新意,而且自己还是比较喜欢这种解密类型的游戏的,至少可以益智下,总玩儿竞技游戏太疲惫了,遇到坑的队友就被坑死,很伤感。Dota2今天卸了,没硬盘空间了。

计划:

1.先把科目1搞定,之后的科目23都应该不会太成问题,毕竟是男孩子嘛,学个车能有多难去。

2.该升级下自己的电脑装备了,显示器因为报驾校花了小4k有点儿心疼了,一直没舍得从家里拿钱去买,看看要不要等工作了再买。还想自己组一个台式机,但是,好吧,工作之后。

3.人脉,该维护的得维护起来了,该建立的把握好机会建立起来,社会就应该是这样子,要融入更多的圈子,结实更多的人才行哇。

4.暑假快结束了,让我在这样放肆地无忧无虑地睡几天吧。

没状态

 

没状态,什么东西都看不进去,是不是得再睡几天啊?

奶牛毕业了

 

今天中午跟浩文、大双、守谦、高强吃了顿不算散伙饭的散伙饭,该聚的也就这样子聚完了,虽然还有很多人想见,但终还是没见上一面。不要问我工作如何,我心理上还没准备好,再给我两年准备吧。

正如酱所说,毕业是件很仓促的事儿。

做毕设的时候挺紧张挺充实的,甚至觉得是大学最充实的日子,可是毕设完成后就是整理论文,答辩,一切都变得匆匆了,那份离愁却不断涌来,说真的,还没玩儿够,没学够,好多东西都还只是想过却没做过,虽然,大学这样子下来,遗憾并不太多,最后一年拿到了人生的第一次奖学金,也拿到了优秀毕设,大学就这样散了对么?

最近一周都在各种饭局间游荡,最大的感慨就是千万别跟哥们儿提喝酒了,怕了,啤酒看都不想看见了。可能这东西是最解离愁的,所以喝吧,可能再都没法跟这群玩了四年的人再这样子喝了玩儿了,你会怀念,当这一切都回不去的时候。

最近可以接一些项目,网站建设方面的(企业站神马的),有小项目的果断抛过来,2K+预算的,低预算的就做不了了。

有业务的加,谢谢。

最近几年的端午节

 

最近几年的端午节印象都比较深刻。

10年在济南过的,去广场拍照,去芙蓉姐吃小吃,天好热。那是第一次住济南,一家很干净的小店,很美好的回忆。粽子是在便利店买的,然后老大送我去的火车站。记得那天还刮风,肉粽还是在路边儿吃的。但是,很幸福。

11年在学校过的,自己去大润发买的粽子,大润发服务台有微波炉,吃的肉粽。

12年在学校过的,各种憨不拉几的闹着没有肉粽要补给我,结果,都不会有了。

13年也是在学校过的,有璐璐小学妹带来的粽子,有肉粽,有八宝的,还有青豆的,都好好吃,还有杏,好感动也很感激,因为我知道不是所有的肉粽都是那么轻易就可以得到的,什么都是,所以如果别人对你很好,一定要心存感激。璐璐学妹很可爱,很喜欢跟她聊天,可能是老乡的关系吧,可以有很多可以说,第一次见面的时候两个莱芜人说了半天普通话。今天天很热,她要从学校南边儿到北边儿,再从北边儿到南边,还是太阳高高挂的时候,我却连个冰激凌都没送人家一颗。想想自己都该打。

我是个偏爱肉粽的人,虽然是甜食控,但是肉粽是我钟爱的食物。再也不能撒娇着要肉粽了,可能,我是个过多索取却付出很少的人吧,嗯,是这样子吧。虽然身边的人多数都是比较‘嘴硬’的,可能多数时候都是我没理吧。低调做人,低调做事才是我该学的。

毕业后打算自己做点儿小项目,继续学习,把geekrss.com也搞起来,这个域名我好像屯了好几年了,一直都想做,但是一直都懒着什么都没做,该打。最后,各位,端午节快乐。有粽子是最好的,没粽子有人陪也是好的,单着没粽子的就自己撸啊撸吧~