极简设计

开源框架思索 2016-01-01

  • 空前繁荣的开源世界
  • 开源框架带来的烦恼
  • 搭配的困难
  • 升级的困扰
  • 重点学习 触类旁通
  • 注重积累 搭建平台

Read More


程序员困境:底层编码能力正逐步丧失 2016-01-01

Read More


你认为1年就可以掌握一门语言吗? 2016-01-01

语言/开发工具 拳脚功夫 算法/结构 兵器 os/开发平台 剑气 易经洗髓

Read More


一则招聘的笑话 2016-01-01

根据玩魔方给职业

Read More


从一个笑话看软件开发管理 2016-01-01

  1. 程序员写出自认为没有Bug的代码
  2. 软件测试,发现了20个Bug
  3. 程序员修改了10个Bug,并告诉测试组另外10个不是Bug
  4. 测试组发现其中5个改动根本无法工作,同时又发现了15个新Bug
  5. 重复3次步骤3和步骤4
  6. 鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于上市了
  7. 用户发现了137个新Bug
  8. 已经领了项目奖金的程序员不知跑到哪里去了
  9. 新组建的项目组修正了差不多全部137个Bug,但又发现了456个新Bug
  10. 最初那个程序员从斐济给饱受拖欠工资之苦的测试组寄来了一张明信片。整个测试组集体辞职
  11. 公司被竞争对手恶意收购。收购时,软件的最终版本包含783个Bug
  12. 新CEO走马上任。公司雇了一名新程序员重写该软件
  13. 程序员写出自认为没有Bug的代码

Read More


兄弟们放弃.NET 转战iPhone和Android吧! 2016-01-01

移动互联网反应迟钝 .net 产业由卖软件拷贝进入服务和体验阶段

Read More


work 2016-01-01

学习领悟:自觉、主动地学习和掌握新的知识与技能,并积极尝试应用于自身工作领域以提高绩效 逻辑分析:针对特性的复杂事件,能够完整梳理和理解相关关联因素、及其彼此之间的业务联系,并聚焦关键问题,做邮有理有据的结论或判断 客户意识:理解客户需求,主动优化产品和服务措施,持续改善客户体验 团队协作:主动承担工作任务,积极支持,协助他人工作,在团队中建立良好的个人合作信誉 抗压能力:面对困难与压力,主动自我调节,不因压力产生的不良情绪影响到工作或他人 动手能力:有丰富的实务操作经验,业务各项工作每一环节的具体内容,并精通操作方法及技能

Read More


websphere 自动部署 2016-01-01

以前在太平洋保险,产险 用的是weblogic 现在在寿险,用的是 websphere war包打出来后,打开was控制台,卸载以前应用,传war包,选节点,同步,启动等,太烦了 找到一个Autodeploy的jacl脚本 http://www.ibm.com/developerworks/websphere/library/samples/SampleScripts.html 改了后一步到位

难点就在配置节点上,示例脚本小改一点 一个cluster,几个web server 默认是根据 node/server 找

狂搜索一通,发现$AdminApp 有个交互模式,可以生成install命令,试几把,配置对了就行了

Read More


vps 2016-01-01

搬瓦工64M VPS,3.99$一年,便宜实惠

Read More


虚拟化 2016-01-01

虚拟化技术大观 https://ring0.me/2014/12/virtualization-overview/

Read More


吐槽 2016-01-01

吐槽

Read More


事务 2016-01-01

Read More


to-read 2016-01-01

http://www.huangyunkun.com/

Jackson 工具类使用及配置指南 http://www.jiangwenrou.com/jackson-%E5%B7%A5%E5%85%B7%E7%B1%BB%E4%BD%BF%E7%94%A8%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97.html

http://samchu.logdown.com/?page=1

http://blog.icoolxue.com/springmvc-3%E4%BD%BF%E7%94%A8fastjson%E4%BB%A3%E6%9B%BFjackson/

阅心笔记 https://www.52os.net/ 23页技术

Nginx开发从入门到精通 http://tengine.taobao.org/book/chapter_02.html

《架构风格与基于网络的软件架构设计》 http://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=http%3A%2F%2Fmysql-udf-http.googlecode.com%2Ffiles%2FREST_cn.pdf&ei=pTKzVLqRLaG-mAW_wYGgBA&usg=AFQjCNExaMfz14oSEP-cdCJ043gLGWFg2A&sig2=6IgxzHxWuud14Zxsh1i6Xg

http://songlee24.github.io/

http://darktea.github.io/

http://www.dumpcache.com/wiki/doku.php?id=start

Linux http://blog.me115.com/

Read More


tcc 2016-01-01

TCC研究(1): Tiny C Compiler最小的C语言编译器,自己编译自己 http://blog.csdn.net/c80486/article/details/44528829 TCC研究(2) 把C语言当作脚本,解释执行,并嵌入各类程序 http://blog.csdn.net/c80486/article/details/43370603

Read More


tair 2016-01-01

docker run -p 5191:5191 -p 5198:5198 --net=host -v /Users/tair/conf/:/conf -v /Users/tair/tair_bin/:/tair -it ubuntu:latest /bin/bash

cp /tair/lib/libboost_thread-mt.so.5 /usr/lib64/

./tair/tair.sh start_ds ./tair/tair.sh start_cs

./tair/bin/tairclient -c 127.0.0.1 -g group_1

stat put name dd get name

Read More


svnkit使用现有认证 2016-01-01

svn

网上代码都是使用用户名密码的 官方让看svnkit-cli里的 SVNCommandEnvironment 最终代码


SVNCommandEnvironment s = new SVNCommandEnvironment("", System.out, System.out, System.in);
SVNClientManager m = s.createClientManager();
SVNRepository r=m.createRepository(SVNURL.parseURIEncoded(""),false);

Read More


struts1 2 区别 2016-01-01

struts1 2 区别

Read More


ssl 2016-01-01

对网站SSL等级评分 https://www.ssllabs.com/ssltest/analyze.html?d=ddatsh.com

ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /etc/ssl/private/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_prefer_server_ciphers on; ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED'; ssl_dhparam /etc/ssl/dhparam2048.pem;

Nginx 配置上更安全的 SSL & ECC 证书 https://www.pupboss.com/nginx-add-ssl/ SSL Labs 评分 A+ 的 nginx 配置 http://songchenwen.com/tech/2015/09/09/nginx-configuration-with-ssl-labs-class-a-plus/

https://im66.net/main/2015-10/1049.pc https://imququ.com/post/letsencrypt-certificate.html https://okwoo.com/lnmp-environment-lets-encrypt-a-certificate-is-registered-and-renewed-automatically

./configure --with-http_ssl_module --with-openssl=/tmp/openssl-1.0.2e --with-http_v2_module

nginx ssl https://s.how/nginx-ssl/ http://www.lovelucy.info/nginx-ssl-certificate-https-website.html http://seanlook.com/2015/05/28/nginx-ssl/

keytool -import -alias ddatsh -keystore D:\dev\java\jdk\8\jre\lib\security\cacerts -file server.crt

keytool -list -keystore D:\dev\java\jdk\8\jre\lib\security\cacerts -file server.crt

keytool -delete -alias ddatsh -keystore D:\dev\java\jdk\8\jre\lib\security\cacerts

Read More


经典架构SSH优缺点 2016-01-01

Spring

为解决企业应用开发复杂性而创建

主要优势之 分层架构

层与层、类与类关系,从强绑定、强耦合变为不绑定、松耦合,直接面向接口编程,设计与实现分离原则发挥到极致 层之间职能更加清,对单元测试也产生深远影响 Spring出现前,模块没有完成,做单独模块的单元测试还是很困难的

缺点

原来难以维护的类与类之间的强耦合关系,转变为更加难以维护的XML ps:后续已支持annotation扫描还有spring boot之类的解决方案简化配置

Hibernate

Hibernate在对EJB臃肿及部署的困难的失望情绪下产生的轻量级解决方案,没有分布式 Rod Johnson就因为强调绝大部分企业应用是不需要分布式的,从而推出了自己轻量级的Spring解决方案 最近随着云计算架构的兴起, 架构是否支持分布式,又是必选项了

技术架构的选型,就跟法国巴黎流行时装一样,真是典型的十年河东,十年河西 所以,像 SOA、云计算、SaaS、物联网这些大名词,不仅会给客户带来很大的困惑,同样也会给程序员、系统分析师、系统架构师、技术总监带来困惑 从肯定到否定,再到自我否定,真是符合大自然螺旋式上升的发展规律

Struts

一经推出,几乎打败了当时的所有竞争对手 其伟大之处,在于它对网页数据的动态绑定 虽然数据绑定不是一个新名词,微软在1991年推出VB 1.0时,就创造性地发明了让VB程序员又爱又恨的数据绑定 但是对于Web 编程,Struts也还是把数据绑定首次应用到了Web编程上 能让人用Set和Get的形式取得网页数据,而不是单一的黑盒式的 request.getParameter(),从而使得网页数据取值进入面向对象(OO)化时代

Read More


springside 笔记 2016-01-01

modules\parent\pom.xml

Read More


Spring mvc 2016-01-01

Read More


spring 技术内幕 2016-01-01

interface BeanFactory String FACTORY_BEAN_PREFIX = "&"; getBean(...) containsBean(String paramString); isSingleton(String paramString) isPrototype(String paramString) isTypeMatch(String paramString, Class<?> paramClass) getType(String paramString) getAliases(String paramString)

HierarchicalBeanFactory getParentBeanFactory(),使得具备双亲IoC容器管理功能

另一条接口设计线路以ApplicationContext ListableBeanFactory extends BeanFactory,细化接口功能 ApplicationContext继承 MessageSource, ApplicationEventPublisher, ResourcePatternResolver等,在BeanFactory简单IoC基础上加入高级容器特性支持

Read More


spring boot 2016-01-01

Spring Boot——开发新一代Spring应用 http://tianmaying.com/tutorial/spring-boot-overview

功能日益复杂,伴随大量的XML配置及复杂Bean依赖关系,Spring 逐渐摆脱XML配置,大量使用“约定优先配置”思想来摆脱Spring框架中各类繁复纷杂的配置(即使是Java Config)

Spring Boot由此背景下被抽象出来,本身不提供Spring框架核心特性/扩展,用于快速、敏捷开发。不替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

在Spring中可以使用@ResponseBody来让返回对象直接转化为Json格式,这种方式需要提供一个专门的对象来作为内容的承载。

如果只是需要快速的一段简单的Json响应就没有必要构造一个对象,然后让对象来承载内容了,可以直接使用JsonNodeFactory来构造。

JsonNodeFactory是jackson中的类,我使用的是Spring Boot,自动包含了这个依赖库。

使用时通过JsonNodeFactory.instance来获取工厂对象,然后进行创建。

@RequestMapping(value = "/status")
@ResponseBody
public ObjectNode showSuccessStatus() {
    JsonNodeFactory factory = JsonNodeFactory.instance;
    ObjectNode objectNode = factory.objectNode();
    objectNode.set("status", factory.textNode("success"));
    return objectNode;
}
@Bean public Filter characterEncodingFilter() {
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    characterEncodingFilter.setEncoding("UTF-8");
    characterEncodingFilter.setForceEncoding(true);
    return characterEncodingFilter;
}

Read More


spring 2016-01-01

spring 早期是重量级企业JAVA框架替代品,尤其是EJB,提供轻量级,精简编程模型,增强POJO能力完成企业级功能,以前在EJB或其他规范才具备 整合轻量级J2EE框架(ORM、MVC等),并构架常用的功能(如DAO)

四个关键策略:

轻量级、微侵入性POJO开发 用DI实现松耦合、面向接口编程 切面和约定实现声明式编程 切面和模板减少样板代码

IOC

“控制反转”,一种设计思想,面向对象编程法则之 好莱坞法则,指导设计出松耦合、易测试、功能复用的代码,整体体系结构变得灵活

设计思想:面向接口编程,贯彻到业务开发 体现设计法则之:好莱坞法则Don't call we,we will call you 控制反转,依赖注入更好理解,把依赖的类以接口方式,用set/构造方法,传入Bean内,更好解耦(优点)

设计好的对象交给容器控制(@Autowire/@Resource/@Inject),而不是传统的业务对象内部直接控制(new Xxx())

两种IoC形式: 1.依赖查找(JNDI 需要写代码,配置环境参数) 2.spring 用的依赖注入(消除API侵入)

IoC容器管理对象生命周期、依赖关系等,配置和依赖性规范与代码分开

DI

与IOC为同一个概念的不同角度描述

show me the code


public interface HelloApi {  }
public class HelloImpl implements HelloApi {  }

让窗口知道要管理的对象


<?xml version="1.0" encoding="UTF-8"?>  
<beans  
xmlns="http://www.springframework.org/schema/beans"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:context="http://www.springframework.org/schema/context"  
xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd">  
<bean id="hello" class="cn.javass.spring.chapter2.helloworld.HelloImpl"></bean>  
</beans>  

后续用component scan免去复杂的xml config

实例化IoC容器,从容器中获取需要的对象,调用接口


 //1、读取配置文件实例化一个IoC容器  
ApplicationContext context = new ClassPathXmlApplicationContext("helloworld.xml");  
//2、从容器中获取Bean,“面向接口编程,而不是面向实现”  
HelloApi helloApi = context.getBean("hello", HelloApi.class);  
//3、执行业务逻辑  
helloApi.sayHello();  

IoC容器的代表:BeanFactory,提供IoC容器最基本功能

AOP

对容器内Bean进行方法干涉。普通函数调用,被容器预处理后,在方法执行前/后进行一些可配置的操作 实现方式如InvocationHandler、cglib

ThreadLocal

java.lang.ThreadLocal 命名为ThreadLocalVariable更容易理解

Java中没有提供在语言级支持,而是变相地通过ThreadLocal的类提供支持

ThreadLocal类用Map存储每一个线程的变量副本

Thread与同步机制都是解决多线程中相同变量的访问冲突 同步机制“时间换空间”,ThreadLocal“空间换时间”

Spring使用ThreadLocal解决线程安全问题 Spring对一些Bean(如RequestContextHolder、TransactionSynchronizationManager、LocaleContextHolder等)中非线程安全状态采用ThreadLocal进行处理,让它们也成为线程安全的状态,因此有状态的Bean就可以在多线程中共享了

http://hanqunfeng.iteye.com/

Read More


一些文章 2016-01-01

颠覆客户端存储 --- LocalStorage http://www.jsmix.com/html5/localstorage.html

word,excel表格转htm(清理无用代码) http://feilong.org/purify-table

htm格式化 http://box.inote.cc/html/ (带美化) http://tool.chinaz.com/Tools/JsFormat.aspx 不带美化

css格式化,支持横,竖排 http://www.happyshow.org/sample/20070626/cssformater.html

Read More


serializable 2016-01-01

json/xml/protobuf/hessian/thrift/avro

通信传输机制:Socket,IOStream,HttpClient,file,memory-input,Nonblocking等 任意通信协议都可与任意通信传输机制结合起来形成一种特定的RPC实现

avo 设计思想、编程模式和thirft非常相似 基schema,和protobuf、thrift相同 “代码生成”是可选的,这一点区别于protobuf和thrift 有schema则读写可跨平台 avro schema是json格式,编写简单,可读性好 写入时连schema一同,有兼容机制保证读可用不同schema RPC中用avo时,通过handshake交换Schema保证一致

http://shift-alt-ctrl.iteye.com/blog/2217425 avro在RPC层面和thrift还有很大的差距,thrift做RPC应用时非常简单而且是production级别可用。更加倾向于使用avro做数据存储和解析

production环境中,通常需要考虑对client/server连接池,提高吞吐,avro-ipc没有,NettyTransceiver本身不能在多线程环境中使用,需要将请求队列化,或者为每个request分配一个唯一的ID,以避免消息的错乱

Read More


安全 2016-01-01

1976年Diffie 和 Hellman 的公钥密码学使两个陌生人可在没有公共秘密情况下实现秘密通信,使数字签名成为可能 数字签名必要特征:

  • 可信

签名的接收者相信签名者签了字

  • 不可伪造

是签名者而不是其他人签了字

  • 不可重用

不法之徒不能把签名移到别的文件上

  • 不可改变

签名之后文件的内容(交易金额)不能改变

  • 不可抵赖

签名者不能事后声称他没有签名

如果 Alice 有一个密码,告诉了 Bob,现在两个人都有这个密码了,这个密码现在属于谁,就说不清了。用传统方法很难想到一种在不依赖第三方的情况下满足上述5条的签名方式

How Bitcoin Works https://ring0.me/2014/02/how-bitcoin-works/ 如何证实一次比特币交易,使其不可抵赖? 如何避免一个比特币花两次? 如果我一个人拥有全网的 10% 算力,是否有可能改写历史? 比特币交易为什么要等几十分钟? 比特币是如何保证数量有限(2100 万个)的? 如何保证每 10 分钟恰好挖出一个比特币? 一次挖出 0.1 个比特币是怎么回事? 一次交易 10000 个比特币,需要生成 10000 条交易信息吗? 比特币这么大的交易量,交易记录如何传输、保存?

网络虚拟化技术大观

https://ring0.me/2014/02/network-virtualization-techniques/

Read More


redis 2016-01-01

Read More


raspberry pi 2 2016-01-01

sysv-rc-conf

shell

按上查找历史命令,默认不忽略重复,让其只输出不重复的 vi /etc/profile

HISTCONTROL="erasedups" export HISTCONTROL

必备工具

sudo apt-get install htop dstat sysstat

3389

sudo apt-get install xrdp

git

sudo apt-get remove --purge git
sudo apt-get install gettext
wget https://www.kernel.org/pub/software/scm/git/git-2.4.0.tar.xz
tar -xvf git-2.4.0.tar.xz
cd git-2.4.0/
./configure --prefix=/usr --with-gitconfig=/etc/gitconfig
make
sudo make install
git --version

备份

Win32DiskImager、dd备份SD卡基于完整镜像,无比浪费时间 终极方案:用dump 和 restore

sudo apt-get install dosfstools sudo apt-get install dump sudo apt-get install parted sudo apt-get install kpartx

df -h 查看空间大小,用dd for win在win上生成稍微大一丁点的img,raspberry pi 里mount过来操作, eg. 3G

google windows dd /dev/zero http://www.chrysocome.net/downloads/dd-0.6beta3.zip 这个有/dev/zero 等

dd if=/dev/zero of=bak.img bs=10M count=300

mount windows 共享 sudo mount -t cifs -o user=xxx,password=xxx,domain=xxx //192.168.137.1/pi /mnt/img

分割

分割成两个分区

第一区FAT32,sector 8192开始到sector 12879,约62.9MB 第二区EXT4,sector 122880开始到结束

sudo parted bak.img --script -- mklabel msdos sudo parted bak.img --script -- mkpart primary fat32 8192s 122879s sudo parted bak.img --script -- mkpart primary ext4 122880s -1

挂载虚拟磁盘并格式化

loopdevice:执行 losetup 连接 img 文件的 loop device device:执行完 kpartx 后,虚拟磁盘代号 partBoot:由 device 加上 p1 组合而成的 FAT32 虚拟磁盘分区 partRoot:由 device 加上 p2 组合而成的 EXT4 虚拟磁盘分区

首先建立虚拟磁盘并分区

loopdevice=sudo losetup -f --show bak.img device=sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1 device="/dev/mapper/${device}" partBoot="${device}p1" partRoot="${device}p2"

格式化虚拟磁盘分区

sudo mkfs.vfat $partBoot sudo mkfs.ext4 $partRoot

五、开始备份 fat32虚拟磁盘分区建立好后直接用cp命令备份文件

sudo mount -t vfat $partBoot /media
sudo cp -rfp /boot/* /media/
sudo umount /media

ext4 linux虚拟磁盘分区用dump & restore 备份

sudo mount -t ext4 $partRoot /media/ cd /media sudo dump -0uaf - / | sudo restore -rf - cd sudo umount /media

六、卸载虚拟磁盘

sudo kpartx -d $loopdevice sudo losetup -d $loopdevice

自定义大小的 image,经过分割、格式化后,再利用 dump & restore 來复制系统中文件,这样就可以让 image 比較接近實際使用空間的大小。很久沒玩 Linux ,本來卡在如何讓分割區可以一次下指令完成,看了下面這篇文章後,豁然開朗:

做完umount win共享 umount -a -t cifs -l

git clone https://github.com/iridium77/htpdate.git cd htpdate make && make install /etc/rc.local htpdate -t -s ntp.neu.edu.cn

git wet https://www.kernel.org/pub/software/scm/git/git-2.4.0.tar.gz sudo apt-get install gettext ./configure --with-expat --with-openssl --with-curl --prefix=/usr/local make -j8 sudo make install

禁止man pages

/etc/dpkg/dpkg.conf.d/01_nodoc

Delete locales

path-exclude=/usr/share/locale/*

Delete man pages

path-exclude=/usr/share/man/*

Delete docs

path-exclude=/usr/share/doc/ path-include=/usr/share/doc//copyright

Read More


raspberry 2016-01-01

sudo raspi-config 扩展文件系统

sudo SKIP_BACKUP=1 https_proxy=http://192.168.1.103:7777/ rpi-update

/etc/apt/apt.conf.d/70debconf Acquire::http::Proxy "http://192.168.1.102:3142";

/etc/apt/sources.list #deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi 替换成 deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi

sudo mkdir /ram sudo mount -t tmpfs -o size=10m,mode=0777 tmpfs /ram

vim 代码高亮

sudo apt-get install vim .vimrc set nu syntax on set tabstop=4

import os import commands

vcgencmd measure_temp

cat /sys/class/thermal/thermal_zone0/temp

安装和卸载命令汇总

安装软件 apt-get install softname1 softname2 softname3…… 卸载软件 apt-get remove softname1 softname2 softname3…… 卸载并清除配置 apt-get remove –purge softname1 更新软件信息数据库 apt-get update 进行系统升级 apt-get upgrade 搜索软件包 apt-cache search softname1 softname2 softname3……

安装deb软件包 dpkg -i xxx.deb 删除软件包 dpkg -r xxx.deb 连同配置文件一起删除 dpkg -r –purge xxx.deb 查看软件包信息 dpkg -info xxx.deb 查看文件拷贝详情 dpkg -L xxx.deb 查看系统中已安装软件包信息 dpkg -l 重新配置软件包 dpkg-reconfigure xxx

清除所有已删除包的残馀配置文件 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。 dpkg: –purge needs at least one package name argument

dpkg安裝的可以用apt卸載,反之亦可。

延长时间

”noatime”和”nosuid”

在树莓派上WHEEZY上安装GCC 4.8

树莓派当前源中的软件一般都比较旧,所以如果要使用较新版本的软件的话需要从测试版仓库中安装。目前,稳定版仓库代号叫WHEEZY,测试版仓库代号是JESSIE。我们可以将/etc/apt/sources.list中的wheezy全部改为jessie;也可以同时保留两个,然后再安装的时候选择。如保留两个,大致流程如下: 编辑/etc/apt/sources.list:

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi # Source repository to add deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi # Source repository to add deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi

编辑(新建)/etc/apt/preferences:

Package: * Pin: release n=wheezy Pin-Priority: 900 Package: * Pin: release n=jessie Pin-Priority: 300 Package: * Pin: release o=Raspbian Pin-Priority: -10

然后执行:

sudo apt-get update

以安装GCC 4.8 为例,执行:

sudo apt-get install -t jessie gcc-4.8 g++-4.8

安装完了之后默认的gcc版本并不是新安装的这个,所以还需执行如下命令以添加alternative configuration:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50

如果你的gcc/g++已经有了alternative configuration(默认是没有的),在执行上面的命令之前应当先删除:

sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++

执行如下如下命令可以修改当前alternative configuration:

sudo update-alternatives --config gcc sudo update-alternatives --config g++

linaro for kinston sd card

kingston SD卡不兼容,装了 Ubuntu / Linaro for Raspberry Pi 2 http://www.raspberrypi.org/forums/viewtopic.php?f=56&t=98997&start=50 用户名密码linaro 默认禁止桌面 echo "manual" > /etc/init/lxdm.override

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ntpdate ntp.ubuntu.com cn.pool.ntp.org

linaro@raspberry:~$ sudo apt-get install nginx Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: geoip-database libgeoip1 libxslt1.1 nginx-common nginx-core Suggested packages: geoip-bin fcgiwrap nginx-doc The following NEW packages will be installed: geoip-database libgeoip1 libxslt1.1 nginx nginx-common nginx-core 0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. Need to get 1917 kB of archives. After this operation, 6079 kB of additional disk space will be used. Do you want to continue? [Y/n]

Linux命令行获取IP地址的实际地理位置 http://www.111cn.net/sys/linux/59440.htm sudo apt-get install geoip-bin geoiplookup 58.247.211.175 在线,限1k/day curl ipinfo.io/23.66.166.151

用U盘 http://magnatecha.com/using-a-usb-drive-as-os-root-on-a-raspberry-pi/ sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=4M resize2fs /dev/sda1

/etc/fstab

/boot/cmdline.txt

tune2fs -m 1 /dev/sda1 http://www.361way.com/mke2fs-dumpe2fs-tune2fs/4091.html

http_proxy=http:/:@proxy:port export http_proxy https_proxy=http:/:@proxy:port export https_proxy

led

git clone git://git.drogon.net/wiringPi cd wiringPi ./build 编译和安装wiringPi

gpio -v gpio readall

gcc blink.c -o blink -lwiringPi

21(pi最外面,最USB口最近的一个)对应gpio readall 里的BCM, echo 21 > /sys/class/gpio/export cd /sys/class/gpio/gpio21 echo out > direction echo 1 > value echo 0 > value

树莓派3 uart调试 /boot/config.txt 加入 enable_uart=1

wifi http://www.jb51.net/LINUXjishu/234506.html

sudo wpa_passphrase peter ddtplinkpwd

/boot 目录下新增 wpa_supplicant.conf 文件,用户可以在未启动树莓派的状态下单独修改 wpa_supplicant.conf 文件配置 WIFI 无线的 SSID 和密码,这样树莓派启动后会自行读取 wpa_supplicant.conf 配置文件连接 wifi 设备。

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

network={ ssid="peter" psk="" }

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

https://www.pestmeester.nl/index.html#11.6

postfix wget ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/official/postfix-3.1.0.tar.gz sudo apt-get install libdb-dev sudo make sudo make install

postfix-install: Error: "postfix" needs an entry in the passwd file. Remember, "postfix" needs a dedicated user and group id. make: *** [install] error 1 解决方法如下:先看下group 1000是否已存在,存在则换一个 groupadd postfix -g 1000 groupadd postdrop useradd postfix -u 1000 -g postfix -G postdrop 然后回到安装目录,重新 make install.

useradd -s /bin/false postfix

useradd -s /bin/false postdrop /etc/postfix # config dir

/usr/sbin/ #administrative binaries

/usr/libexec/postfix #postfix daemon

/var/lib/postfix #cache and other random data

/usr/bin/mailq #Sendmail compatible mail queue listing command

/usr/bin/newaliases #Postfix newaliases command

/var/spool/postfix #Postfix queue directory

/usr/sbin/sendmail #Sendmail compatible mail posting interface

postconf -d | grep mail_version

http://www.binarytides.com/linux-mail-command-examples/

Read More