世界上只有10种人


关于程序猿的笑话,有点冷...

世界上只有10种人:懂二进制的和不懂二进制的.


为什么程序猿分不清圣诞节和万圣节?
因为 DEC 25 == OCT 31.


年少时轻信了耐克的蛊惑,走上了这条不归路,去你妹的Just do IT.


当代的程序猿,其实就是远古的巫师。他们通过一些普通人不理解的符号,与某个世界的自然法则相沟通,进而实现人类需要的奇迹.


某程序猿对书法十分感兴趣,退休后决定在这方面有所建树,花重金购买了上等的文房四宝。
一日突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:
Hello World.


提交代码不写注释的人,小JJ就跟注释一样长.


传说在每一个软件公司里,都有一个扫地的老太太,当她经过一个程序猿的身边,很偶然地扫一眼屏幕上的代码,会低声提醒道:“小心,栈溢出了”。


Keyboard not found... press F1 to continue.


做为一名程序猿,我每次看到工资单的时候,都会想:那些数字为神马不是16进制.


一位软件工程师、一位硬件工程师和一位项目经理同坐车参加研讨会,不幸在从盘山公路下山时坏在半路上了,于是他们就如何修车的问题展开了讨论。

硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”

项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”

软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”


如果有一天你上了飞机后,发现飞机上飞行用软件的是你的团队开发的,你会下飞机吗?


本人精通Python、C、C++、C#、Java、Delphi、VB、HTML、JavaScript、PHP、MySQL等单词的拼写;
熟练PhotoShop、Illustrator CS、CorelDraw、Flash CS、AutoCAD、Office等软件的安装与卸载;
掌握Windows Server、Unix、Linux,Mac OS等操作系统的开关机;
求月薪过万的工作。


请输入图片描述

- 阅读全文 -

nginx配置文件详细说明


操作系统: Debian8
软件版本: nginx 1.6.2


配置文件说明:
nginx默认配置文件为/etc/nginx/nginx.conf,可以在运行命令中-c指定配置文件。


# 运行用户
user www-data;   
# 启动进程,通常设置成和cpu的数量相等
worker_processes  1;

# 全局错误日志及PID文件
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

# 工作模式及连接数上限
events {
    use   epoll;              # epoll是多路复用IO(I/O Multiplexing)
    worker_connections  1024; # 单个后台worker process进程的最大并发链接数
    # multi_accept on;
}

# 设定http服务器
http {
    
    # 访问日志
    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;        
    #开启gzip压缩
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    
    # server的配置(后边详细介绍)
    server {
    }
     
    # 从文件导入其他的server配置
    # 其中sites-enabled目录下都是指向sites-available目录中的软链接,
    # 建议用户自己添加的配置都放在sites-available目录中,然后软链接至sites-enabled目录;
    # 需要临时关闭的话,可以删除sites-enabled中的软链接,恢复时重建链接即可。
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

# 设定mail服务器
#mail {
#}

# 设定rtmp 服务器
#rtmp {
#    server {
#    }
#}

server配置项详细说明: 并不需要所有的条目,无用的条目可以删减去

server {

    # 侦听端口:可侦听多个端口,以空格分隔
    listen 80 default_server;
    
    # 绑定域名:可以绑定多个域名,以空格式分隔
    server_name  oroct.com www.oroct.com blog.oroct.com;
    
    # 设定访问日志
    access_log  logs/oroct.com.access.log  main;
    
    # 默认请求
    location / {
        # 定义服务器的默认网站根目录位置
        root   /var/www;     
        # 定义首页索引文件的名称 
        index index.php index.html index.htm; 
        
        # php相关配置        
        fastcgi_pass unix:/var/run/www/php.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        
        # 重写向不存在的页面
        if (!-e $request_filename) {
                rewrite ^(.*)$  /index.php last;
        }

    }
        
    # 定义错误提示页面
    # error_page   500 502 503 504 /50x.html; 
    # location = /50x.html {
    #    root   /var/www/error;
    # }
    
    # 静态文件,nginx自己处理
    # 静态文件不怎么更新,过期可以设大一点,
    # 如果频繁更新,则可以设置得小一点。
    location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        root /var/www/virtual/htdocs;       
        expires 30d;
    }
    
    # 也可以单独把PHP部分摘出来
    #location ~ \.php$ {
    #}
    
    # 设定查看nginx状态的地址
    location /NginxStatus {
        stub_status           on;
        access_log            on;
        auth_basic            "NginxStatus";
        auth_basic_user_file  conf/htpasswd;
    }
    
    # 禁止访问 .htxxx 文件
    location ~ /\.ht {
        deny all;
    }    
}

配置端口转发:

server {
    server_name git.doit.pub;
    location / {
        # 代理地址及端口
        proxy_pass  http://127.0.0.1:3000; 
        # 修改转发请求头
        proxy_set_header Host $proxy_host; 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

未绑定域名访问: 关键字一个下划线_

server {
    listen 80 default_server;
    server_name _;  
    root /var/www/default;
    # 通过include简化php配置语句
    include /etc/nginx/fastcgi_php;
    location / { 
        index index.php index.html;
    }   
}

如果不设置的话,一般会指向第一个server的配置,所以这个一定要注意,也可以通过return 404返回错误。

server {
    listen 80 default_server;
    server_name _;  
    return 404;   
}

配置https服务:

server {   
    # https监听端口为443 
    listen 443;
    # 指定证书
    ssl on; 
    ssl_certificate      /etc/nginx/ca/server.crt;
    ssl_certificate_key  /etc/nginx/ca/server_nopwd.key;
    
    # 下边的设置基本都差不多了
    # ......
}

配置rtmp服务:

# 配置RTMP服务(RTMP章节详细说明)
rtmp {                
    server {
        listen 1935;      # 服务端口
        chunk_size 4096;  # 数据传输块的大小

        application vod {
            # 视频文件存放位置。
            play /opt/video/vod; 
        }
        application vod2 {
            play /opt/video/vod2; ;
        }
        application live{
        }
        application hls{
        }
        
    }
}

https://www.jianshu.com/p/0a6f0b425b7f


配置负载均衡:

http {
    .............
    
    #设定负载均衡的服务器列表
    upstream mysvr {
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 开启本机上的Squid的3128端口
        server 192.168.8.1:3128 weight=5;
        server 192.168.8.2:80   weight=1;
        server 192.168.8.3:80   weight=6;
   }    
}

https://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html

- 阅读全文 -

avr-gcc安装与使用


1.安装binutils

下载地址:http://ftp.gnu.org

#tar -jxvf binutils-2.21.tar.bz2
#cd binutils-2.21
#./configure --target=avr --prefix=/usr/local/atmel
#make
#make install

添加 /usr/local/atmel/lib 到 /etc/ld.so.conf文件中
添加 export PATH=${PATH}:/usr/local/atmel/bin到 /etc/bashrc

配置说明:
--target=avr
--prefix=/usr/local/atmel


2.安装avr-gcc编译器

下载地址:http://ftp.gnu.org

#tar -jxvf gcc-core-4.1.2.tar.bz2
#cd  gcc-4.1.2
#./configure --target=avr --prefix=/usr/local/atmel --disable-nls --enable-language=c --disable-libssp
#make
#make install

配置说明:
--target=avr
--prefix=/usr/local/atmel
--enable-language=c //这里也可以添加c++
--disable-nls
--disable-libssp //新的gcc版本可能参需要此选项,否则编译时出错


3.安装avr c语言库

下载地址:http://savannah.nongnu.org/

设置一些环境变量(bash语法):

#export CC=avr-gcc
#export AS=avr-as
#export AR=avr-ar
#export RANLIB=avr-ranlib

编译安装

#tar -jxvf avr-libc-1.7.0.tar.bz2
#cd avr-libc-1.7.0
#./configure  --target=avr --prefix=/usr/local/atmel --host=avr
#make
#make install

配置说明:
--target=avr
--prefix=/usr/local/atmel
--host=avr


注意事项:

本文档在RHEL5.4中安装成功;

各工具版本不一定要最新,能用即可,特别是gcc-core最好不要比当前系统运行的gcc版本高,否则有可能不能配置和编译。

如果编译gcc的时候出下面的错误:

libssp/ssp.c:168: error: too many arguments to function 'fail'

配置时候添加 --disable-libssp参数即可。


测试程序

/*************  测试程序  *********/
#include <avr/io.h>

//简单的延时程序
void  delayms(unsigned  char  ntime)
{
     unsigned char temp;
     while(ntime){
         ntime--;    
         temp = 0xff;
         while(temp){temp--;}
         temp = 0xff;
         while(temp){temp--;}
         temp = 0xff;
         while(temp){temp--;}
         temp = 0xc0;
         while(temp){temp--;}
    }
}

//主程序
int  main(void)
{         
    delayms(200);
    DDRA  = 0xFF;
    PORTA = 0x55;
    delayms(200);

    //程序主循环
    while(1)
    {
        PORTA = ~PORTA;
        delayms(200);
        asm("NOP");    //嵌入汇编
     }
    return 0;
}

Makefile

##################  Makefile ############################
PRG        = main
OBJ        = $(PRG).o
MCU_TARGET = atmega32
OPTIMIZE   = 
DEFS       =
LIBS       =
#################指定编译器类型#########################
CC         = avr-gcc
#######################################################
# Override is only needed by avr-lib build system.
override CFLAGS  = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS)
override LDFLAGS = -Wl,-Map,$(PRG).map
OBJCOPY          = avr-objcopy
OBJDUMP          = avr-objdump

all: $(PRG).elf text $(PRG).lst  

$(PRG).elf: $(OBJ) 
    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) 

lst:  $(PRG).lst

%.lst: %.elf
    $(OBJDUMP) -h -S $< > $@
#######################################################
# Rules for building the .text rom images

text: hex bin

hex:  $(PRG).hex
bin:  $(PRG).bin

%.hex: %.elf
    $(OBJCOPY) -j .text -j .data -O ihex $< $@

%.bin: %.elf
    $(OBJCOPY) -j .text -j .data -O binary $< $@
#######################################################
clean:
    rm -rf *.o *.elf *.hex *.bin
    rm -rf *.lst *.map
#######################################################

- 阅读全文 -

SQL语法基本用法


查询记录
语法格式:

SELECT item FROM table_name WHERE conditions;

查询name为Simth,并且age < 30的记录

SELECT * FROM my_table WHERE name = 'Smith' AND age < 30;

查询birth字段值为空的记录

SELECT *  FROM   pet  WHERE ISNULL(birth);

查询记录数

SELECT COUNT(*) FROM my_table;

从表users中只查询name字段和main字段(输出为Email字段)

SELECT name, mail as Email FROM users;

降序排列

SELECT * FROM my_table ORDER BY id DESC;

升序排列
不指明默认为升序ASC

SELECT * FROM my_table ORDER BY id; 

- 阅读全文 -

代码插件测试


如果看到代码是完整且整齐的,则说明插件测试成功.

/*
 * 功能描述: DES单元运算
 * 参数列表: Out     - 8字节运算结果
 *          In      - 8字节数据
 *          pSubKey - 过程密钥
 *          Typde   - {ENCRYPT(加密),DECRYPT(解密)}
 * 返 回 值: 无
 */
void SingleDes(char Out[8], char In[8], char Type)
{
    int i = 0;    
    char M[64], tmp[32];    
    char *Li = &M[0];
    char *Ri = &M[32];
    memset(M,   0, sizeof(char)*sizeof(M));
    memset(tmp, 0, sizeof(char)*sizeof(tmp));
    ByteToBit(M, In, 64);
    Transform(M, M, IP_Table, 64);      //初始置换(IP置换)
    if( Type == ENCRYPT )
    {
        for(i=0; i<16; i++)
        {
            memcpy(tmp, Ri, 32);        //保存右半部分
            F_func(Ri, (*pSubKey)[i]);  //对右半部分和密钥进行操作
            Xor(Ri, Li, 32);            //右半部分与左半部分异或操作
            memcpy(Li, tmp, 32);        //原来的右半部分放至左半部分
        }
    }
    else
    {
        for(i=15; i>=0; i--)            //加密和解密只是顺序不同
        {
            memcpy(tmp, Ri, 32);
            F_func(Ri, (*pSubKey)[i]);
            Xor(Ri, Li, 32);
            memcpy(Li, tmp, 32);
        }
    }
    RotateL(M,64,32);               //左右交换(循环移位)
    Transform(M, M, IPR_Table, 64); //逆初值置换(IPR置换)
    BitToByte(Out, M, 64);          //bit流转换为字节
}

- 阅读全文 -


Copyright©2025 春天花会开, All Rights Reserved. Email: webmaster@oroct.com