其实自己原本就是个“无脑”的程序员而已!--- 溢出 与 “环”

记得前两天写东西的时候还遇到一个问题,这个问题大家很熟悉, 当然解决方法也很显然:

坐标需要从0-256直接循环移动, 根据常理,很容易写出来这种代码

i = 0;
//xxxxxxxxx
{
        if(i > 256)
                i = 0;

        i++;
}
对,对啊,很显然嘛,不这么做怎么做,不过当时也想过用循环链表, 这样,就永远处于一个圈里了,转就是了,后面一想,就这么个东西,
劳架链表太不好了,说不定后面来看就看不懂了,还会立马给句“SB!”
今天有幸看到一位CSDN大牛的blog,看到了 另一个视角解读计算机编码-补码编码 一文, 文中很犀利的将我之前也觉得很头疼恼火的
补码解释的淋漓尽致,顿时想起来,哎,亏我还是个学数学的(纯属意外事故哈!),当时老师貌似说过 **群环域**的概念 , 那上面
这个东东不就是可以用位掩码来搞定嘛,就可以不用if else语句了嘛, 所以

----->

1. 首先, 自己大多数时候是个很 …
more ...

linux flash插件等程序声音不正常的原因: 笔记本多个声卡, 需要配置

前段实际系统是Arch linux, 当时什么程序都能放出声音来就是flash不行,一直无声状态, 始终没有搞定。

这几天因为做嵌入式的原因,系统换成了Funtoo, 个人感觉就是改进了Gentoo 的 emerge --sync 吧, 其他的还不怎么明显, 也没体会到,感觉根Gentoo无异了, 不过系统装起来, 声音还是不正常, 播放mplayer说

alsa-lib: pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave

Google之发现是因为系统多个声卡, 没有配置的情况下会选择0, alsamixer里面我的声卡也是两个, 第一个是什么hdmi的声卡, 哎, 感觉无奈,这个东东有用么, 不过还是自己水平低, 真正的声卡处于第二个位置, 突然想到这也是flash无声的缘故了吧, 随即编辑 .asoundrc 或者 /etc/asound.conf

pcm.!default {
    type hw
    card 1
}

ctl …
more ...

使用ostinato做网络开发分析辅助工具

最近参与公司一个项目, 需要在L2工作, 封包是经常的事情,之前一直用N2X, 需要排队, 后面搜索网络发现了ostinato工具, 虽然还在成长中, 但是已经非常强大够用了.

特淘宝淘了个双口的千兆网卡, 拿回来装起, 先跑server drone程序, 然后开ostinato客户端, 计算机上的eth0,1,2均认的出来, 然后drone跑对了之后就port group可用了, 点击eth, 新建stream里面就可以选择L2, Vlan等选项, 非常强大, 另外发现intel的网卡芯片才支持vlan, 可以抓到带vlan标签的包, 正好淘的网卡是intel的服务器专用卡, 不错!,

这里记下, 有用的同学可以参考下.

more ...

acer aspire 4560G A6 apu notebook arch linux installation tips

arch linux or gentoo linux installtion on Acer aspire 4560G will always have troubles.

the video driver. JUST NOTE

  • amd catalyst driver will not works at all, I tired 1 year before, it failed. and failed again today.

So, you only need the opensource driver xf86-video-ati and use radeon only …

more ...

如何恢复mysql inno db 损毁的数据库表内容 ?

一次机器的强制关机,导致了服务器mysql数据库启动失败, 说是数据库因为关机问题,数据写入不正常, 无法启动, 使用mysql的数据库恢复功能没能成功

因为自己当时不知道数据库自己恢复的条件,只拷贝备份了数据库目录, 并没有备份idb和idb的log1,log2两个文件,所以自动恢复没法进行,基本上是数据

已经丢失了

网上去搜索发现有个恢复工具, 开源的 就拿试试, 果然最终还是解救到了数据.

基本思路是, inno db引擎的数据库文件是 frm放 表项索引, idb里面是表的具体内容, 只要idb文件在, 一般都是可以恢复的

步骤如下:

    1. 使用工具 将idb文件分割得到很多page文件
    1. 然后page文件全部cat到一个大文件
  • 3. 找到你的表的结构: 我这里因为是服务器还在, 可以从原来正确的数据库里面读取到表的结构, 就是知道表当时是如何创建的

,使用 show table create <tablename>; sql 命令 就可以得到.

这里工具里面有个脚本, 配置上你的参数, 叫自己去读,然后会生成一个头文件, 这个下面需要用来编译提取这个表用的解析器.

但是我的情况是数据库新建的表没有使用innodb格式了,所以需要将那个脚本里面的判断是不是innodb的语句注释 …

more ...

学习-资源

Linux下的工作

  1. IDE

python -- eric

perl      -- padre

cpp/c,  -- codeblocks, Eclips CDT, codelite, anjuta, Geany, medit as IDE, gedit with plugins.

C#        -- mono develop

exVim   -- Vim IDE

  1. Libs

glib for c (unix, mingw).

libevent : event driven software desgin lib for C/C++

libsig++: event lib for C++

  1. debug

DDD/Nemiver/Kdbg …

more ...

MinGW/Codelite 如何生成正确的dll文件

dll文件里面包括了函数的实现二进制代码段, 在linker输出的时候,通常Cpp会对函数改名,所以名为writestr的函数可能在dll里面表示为writestr@0 这样的名称,所以在输出dll的时候需要使用def文件来处理这些输出的问题

下面是def文件示例

LIBRARY example

EXPORTS
cpystr@0 @1
explong@0 @2
writestr@4 @3
cpystr=cpystr@0
explong=explong@0
writestr=writestr@4

使用=可以对函数名称做别名进行修正,在默认情况下mingw输出的so文件实际就是dll文件,只不过函数名称是加了序号的

总结用codelite输出正确dll的方法是

在链接参数里加 -Wl,--out-implib,libexp.a,--output-def,exp2.def

这样编译器会自动输出一个当前编译出来的so文件的导出函数列表,当然是加了数字序号之类的,所以你需要更名,复制一份按上面的语法添加别名,然后存为exp.def文件

这样postbuild里面再用这样的语句重新输出dll文件,g …

more ...

seascope代码阅读器支持编辑补丁

Seascope 是一个pyQt写的代码阅读工具,在linux原来的kscope其实功能很强大,绝对可比source Insight,不过,kde到4之后就没维护了,后来偶遇seascope,不过当时是0.3版本,代码显示的时候字体不能改变,文件也是只读,没法编辑,不过函数定义,引用等搜索功能确是完整的,但是下下来用了用不是很方便编辑就不了了之了。

前两天同事又问linux下面代码阅读工具,就又去看了看,发现出0.4版本了,下载来看了下变化比较大,不过编辑功能还是没有啊,看了看是pyQt,正好自己还是想深入学习下python,那看看能不能自己改改呢 ? 两天努力下来还真基本给实现了,支持一般的代码编辑器的编辑功能了,保存文件也基本可以工作了,不过可能有一些小bug ,patch邮件给了原作者,不过不知道作者会不会接受了。

这里给出patch

diff -purN seascope-0.4/src/Seascope.py seascope-0.4-dbh/src/Seascope.py
--- seascope-0.4/src/Seascope.py    2011-12-15 …
more ...