Living a Simple Life is a Happy Life

有饭吃,自由自在,就非常开心

最疯狂的比特币用户

| 0 Comments

这是比较早期的文章,文章的作者老端属于国内最早的玩家之一,现在也是英雄总被雨打风吹去了。老端也早就由粉转黑,不过现在看看,不失为介绍比特币的一篇妙文。

正文

看完这篇文章,我相信你一定会说,我靠,这世界上什么事情都会有!

最近老端一直在向大家介绍一种叫做“比特币”的东西,事实上我自己也囤积了不少,因为我非常看好这东西的前景,不仅如此,我还帮我的朋友代购了一些,但我不推荐他们买太多,这个购买量应该是即使全部损失也不影响生活的限度。可我忽然发现,这世界上原来有比我们疯狂几百倍的人。一位叫做Rickard Falkvinge的瑞典人,他将自己的全部资产换成了比特币。

Rickard在自己的博客的《为什么我把我的积蓄全部投入Bitcoin?》中写道:过去的几天里,我做了很多关于比特币的思考,最后我决定把我所有的积蓄,和所有我能借到的钱都投到比特币里面。

Rickard列出了三个他这么做的理由:

Bootstrap Learn123

| Comments

Caption1 startUp

  • ARIA: Accessible Rich Internet Applications

简单说来,就是指无障碍网页应用。主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员。尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏幕阅读器,屏幕阅读机可以大声朗读或者输出盲文。

而ARIA就是可以让屏幕阅读器准确识别网页中的内容,变化,状态的技术规范,可以让盲人这类用户也能无障碍阅读!

参考:

https://www.sitepoint.com/html5-main-element/

TCP/IP Illustrated Note1

| Comments

又开始重读<TCP/IP详解>。发现真的是年纪大了….T_T,看了就忘,做笔记也用处不大。

打算每天读完一部分,在这里捡一些重要的地方记一下。

ARP

习得技能:

  • tcpdump -e 可以显示硬件层地址

IP

重要提示:

  • 传输之前需要把首部转换成网络字节序。注意,仅仅是首部就可以。

ICMP

重要提示:

  • 在对ICMP差错报文响应时,永远不会生成另一份ICMP差错报文

  • 当发放一份ICMP差错报文时,始终包含IP首部和产生ICMP差错报文的IP数据包的前8个字节。这样就可以精准知道谁产生的ICMP差错

  • ICMP的典型应用:

    • 掩码请求和应答 (大多数主机在收到请求后都会产生应答,而不是指定的主机应答,这其实是实现上的冗余)

    • 时间戳请求和应答

  • 多宿主机发送报文给自己的某个接口,其实都是给回环地址的,这样产生的ICMP应答其实搞不明白原始报文发给哪个接口

Ping

习得技能:

  • Ping -S 每秒一个往返请求

  • Ping -R 记录路由,但是有限制,最大只能存放9个IP地址,而且只记录路由出口

How to Keep Environment Variables and PATH When Using SUDO

| Comments

sudo tips

How to keep Environment Variables when Using SUDO

The trick is to add environment variables to sudoers file via sudo visudo command and add these lines:

Defaults env_keep += "HOME"

or and pay attention to the -E flag. This works:

export HOME=/home/users/memorybox
sudo -E bash -c 'echo $HOME'

How to keep PATH Variables when Using SUDO

vim /etc/sudoers
sed -i 's#Defaults    secure_path =.*#Defaults    secure_path =/usr/java/latest/bin/.....:#g' /etc/sudoers

How to change root env

sudo -i

Enable Ldap on Centos

| Comments

Dockerfile

FROM docker-registry.dev.netis.com.cn:5000/autobuild/centos6

# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER memoryboxes memoryboxes@gmail.com

# Commands to add ldap to image
RUN mkdir -p /etc/openldap/cacerts/ && \
    rpm --rebuilddb && \
    yum clean all  && \
    wget http://xxxxxx/ca.cert -O /etc/openldap/cacerts/ca.cert && \
    wget http://xxxxxx/sshd_config -O /etc/ssh/sshd_config && \
    chmod 600 /etc/ssh/sshd_config && \
    sed -i  's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config && \
    echo "xxxxxxx" | passwd --stdin root && \
    yum -y install pam_ldap.so authconfig nscd openldap-clients nss-pam-ldapd && \
    yum -y install sudo && \
    yum clean all

ADD nscd /etc/dockerservices/nscd
ADD nslcd /etc/dockerservices/nslcd
COPY docker_entrypoint.sh /

# Commands when creating a new container
ENTRYPOINT ["/docker_entrypoint.sh"]
CMD ["/usr/bin/svscan", "/etc/dockerservices"]

docker_entrypoint.sh

#!/bin/bash

set -e

echo "x.x.x.x ldap.xxx.com.cn" >>/etc/hosts
authconfig --enableldap --enableldapauth --ldapserver=ldap.xxx.com.cn --ldapbasedn="dc=xxx,dc=com,dc=cn" --enablemkhomedir --enableldaptls --enablecache

exec "$@"

再谈以太网帧格式

| Comments

又重新读了一遍《tcp/ip详解》,又重温了一遍万年知识以太网,为了不能忘却的回忆,我决定原文摘抄一遍。

以太网这个术语是指DEC、Intel和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要局域网技术。 几年后,IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络, 802.5针对令牌环网络,这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的 是,802.3定义了一个与以太网不同的帧格式。

下图定义了两种不同形式的封装格式:

802.3

在以太网帧格式中,类型字段之后就是数据,而在802帧格式中,跟随在后面的3字节的802.2LLC和5字节的802.2SNAP。

目的服务访问(DSAP)和源服务访问点(SSAP)的值都设为0xaa。ctrl字段的值设为3.随后的3个字节org code都设置为0。

再接下来的2个字节类型字段和以以太网帧格式一样。

CRC字段用于帧内后续字节差错的循环冗余码检验。

802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充字节。

最后注意一下,mtu的大小只是指帧内容的大小,不包括帧头。所以mtu是1500时,QinQ又额外的四个字节,加上帧头共1522个字节,会丢包,最小要把mtu设置为1504。

学了点财会知识

| 0 Comments

周末又复习了一点财会方面的知识,顺便又重温了复式记账,要想办法用起来啊。

记一些小tip:

企业账本一般分为

  • 总账

  • 明细账

  • 十三栏明细账

  • 存货进销存账目

  • 应收票据备查账

会计凭证

  • 原始凭证

    • 自制原始凭证

    • 外来原始凭证

  • 记账凭证

    • 收款凭证

    • 付款凭证

    • 转账凭证

会计恒等式

资产 = 负债 + 所有者权益

为什么要设定会计和出纳两个职位

  • 要求出纳和会计都登记资金类账簿,是为了互相核对的需要

  • 出纳的银行存款日记账要求更严格,如果出现错误,只能原页修改,而会计的银行存款证明细账可用活页替换

一般公司的差旅报销流程

  • 报销人填写差旅报销单

  • 分管领导签字

  • 会计统计明细账,核对单据

  • 财务负责人签字

  • 出纳支取

  • 领取人签字

一般纳税人和中小规模纳税人

  • 一般纳税人: 开具增值税专用票,17个点的抵扣

  • 中小规模纳税人: 可由国税局代开增值税专用票,3个点的抵扣

ps: 上海市国税地税不分家的,所以这个要实际操作才知道。

慢慢学着理解好的产品是什么

| 0 Comments

从很久很久之前,我就不是很在意技术细节了。

当年还四处走矿山的时候,我看到有人还在用一个很高级的电脑跑DOS的时候,震惊了。当时那个负责人说,有个矿压软件一直跑在DOS里,习惯了。就这么用下来了。

互联网的产品之冠,在我看来,一直是hao123.com

但是那时候只是停留在意识层次,最近痛下决心,慢慢学习,试图理解什么是好的产品,好的产品是怎么成就的。

  • 好产品满足人的 贪懒嗔痴,就这个理论来看,我一直坚定不移的抱持一个观点,互联网的篮下,是色情流量。

  • 好产品不是设计出来的,是慢慢生长起来的

  • 成功的产品初期,应该只有一个功能

  • 成功产品,slogan一句话就说明白

  • 面向场景来做设计而非功能列表

  • 好产品会召唤用户,如果没有自然增长就不必推广

听了一堂产品经理培训,问了几个问题,记录一下

  • [问题]王老师你好,我是一个程序员。虽然工作方面是后台开发,但也懂一点前台,前一段时间自学Android,开发了一个小游戏。但是总觉得有道坎,不能达到那种专业的产品水准。早期我理想中的好的产品草根典型,是hao123.com。我也一直往这方面去学习,但考虑实际的用户场景时总是感觉磕磕绊绊,比如我现在在写一个经营微信公众号的工具类网站,对于需求、取舍考虑很多,也反复改了几版,总是觉得不是那种“就是它了”的程度。请问怎么继续学习提高呢?

  • 解答: 实现为主,快速上线,反复迭代,等用户吐槽。

  • [问题]王老师,如果你的团队这个sprint的任务都排满了。这个时候boss过来要强加功能,你一番权衡之后觉得还是放在下个sprint为好。怎么和boss沟通呢?谢谢。

  • 解答:搞清楚BOSS的目的,协调、沟通,解决。切忌直接反对。

  • [问题]王老师,请问网易的WEB产品经理懂CSS、JS等前端知识吗?关注诸如nodejs、React等新知识吗?能有独立开发一个小网站的能力吗?能熟悉Linux常用操作吗?你认为产品经理需要有这些技能吗?

  • 解答:需要。学无止境。

Udp Packet Receive Errors

| Comments

Issue

netstat -s output shows high number of Udp: packet receive errors

Getting high number of UDP packet drops or loss

SNMP trap issue :- SNMP trap seems to be fluctuating on my RHEL server.

Resolution

Udp: packet receive errors is increased for the following reasons:

  • Not enough socket buffer space

  • UDP checksum failure

  • UDP length mismatch

  • IPSec Security Policy failure

Diagnostic Steps

Gather statistics

Run the command netstat -nsu and see the Udp: section:

netstat -su

Udp:
    559933412 packets received
    71 packets to unknown port received.
    33861296 packet receive errors    <---- HERE
    7516291 packets sent
Socket buffer checking:

The current system-wide default socket buffer size can be determined with the commands:

sysctl net.core.rmem_max
sysctl net.core.rmem_default

This can be confirmed by watching socket statistics whilst packet receive errors is growing by running ss -nump at regular intervals, for example:

while true; do ss -nump; sleep 1; done

This will produce output as follows:

State    Recv-Q Send-Q    Local Address:Port      Peer Address:Port
ESTAB    0      0           192.168.0.2:4500       192.168.0.1:4500
users:(("processname",pid=1234,fd=3))
        skmem:(r0,rb212992,t0,tb212992,f4096,w0,o0,bl0)

If the Recv-Q statistic is regularly growing large, such as approading the system-wide rmem_max, then increase the socket buffer size.

Note this means the application is not receiving from the buffer fast enough. It may be necessary to reconfigure or redesign the application to perform better.

Conclusion

The statistic Udp: packet receive errors is reporting the SNMP MIB called UDP_MIB_INERRORS.

Commands

  • run udp server

      nc -4 -u -l 2389
    
  • cli to server

      echo -n "hello" | nc -u x.x.x.x 2389
    

Extend Lvm in vCenter

| Comments

如何在vCenter上LVM分区扩容

  • 导入镜像后,编辑虚拟机,增加第二块硬盘

  • 这个时候我们执行下面命令就可以看到新加的磁盘

      ls -alh /dev/sdb
    
  • 使用fdisk 创建lvm分区,方法和创建普通分区的方法一致,然后lvm的分区类型是8e

  • 执行下面的命令看看效果,现在/dev/sdb1 已经是linux LVM类型的分区了

      fdisk -l
    
  • 创建PV

      pvcreate /dev/sdb1
      pvdisplay
    
  • 把PV加入VG中

      vgdisplay
      vgextend centos /dev/sdb1
    
  • 扩容LV

      lvdisplay
      lvextend -L 150G  /dev/centos/opt
      xfs_growfs /dev/centos/opt
    
  • df -h看一下,打完收工

  • 如果再不够,可以加第三块盘,同样的操作