打包
周末,寝室同学决定去外面改善伙食。老四有事去不了,让我们帮他带份饭菜回来。
我们5人围坐一桌,吃相凶猛,一个菜上来,一顿哄抢,盘子就空了。服务员端上新菜,再把空盘撤下。于是桌子上竟一直只有一个盘子。
最后吃完了,拎着给老四点的菜刚想走,旁边一个刚来吃饭的同学看了我们一眼,说,”真牛,一帮人吃一个菜,还打包……”
收藏:魅族M8 Android内核源码和固件下载
魅族官方提供了M8的Android内核源码,包含了完整的驱动以及说明,由于MEIZU M8的物理硬件和iPhone一样平时操作的只有1个Home键无法模拟,Android的Back、Menu以及其他因素魅族放弃了M8跑Android的计划。由于M8使用的是Samsung ARM11内核的S3C6410工作频率为667MHz,山寨厂商有一定的借鉴价值。
有关魅族M8的ADB驱动 http://m8-android-kernel.googlecode.com/files/M8_6410_adb_driver.rar
M8的Android编译好固件下载,刷机方法和Wince的一致,下载后直接解压放到USB Storage的根目录 http://code.google.com/p/m8-android-kernel/source/browse/bin/m8_android.rar
M8 for Android源码托管在Google Code上面,使用SVN工具直接提取 浏览地址 http://code.google.com/p/m8-android-kernel/source/browse/#svn/trunk 需要注意的是Android开发网发现有关Modem这块代码没有,涉及到了英飞凌的机密,不过可以看到编译好的库,直接挂上即可。
SVN Checkout地址 http://m8-android-kernel.googlecode.com/svn/trunk
最后是Android123找到的有关M8的移植文章网上整理的word文档,有兴趣的网友可以DIY下,不过Android开发网表示Android和M8原始的Wince比较差距较大,个人还是建议使用完善的WinCE系统,毕竟可以直播RMVB、WinCE对于M8更适合些。
1. make menuconfig
A. 串口改成串口3输出打印信息。 (一) (root=/dev/nfs init=/init nfsroot=192.168.1.10:/nfs ip=192.168.1.100 console=ttySAC2,115200 console=ttySAC2,串口2输出,必须与下面同时修改 (二) System Type —>S3C UART to use for low-level messages—>2 值设成2,即串口2输出,必须与上面同时修改。
B. Onenand驱动支持 (一) Device Drivers —>Memory Technology Device (MTD) support —>OneNAND Device Support —> [] Verify OneNAND page writes <> OneNAND Flash device via platform device driver (二) onenand的支持 从贺超提供的linux2.6.27包drivers\mtd\onenand目录复制s3c6410.h,s3c_onenand.c,s3c_onenand.h提供对三星onenand的支持 (三) Makefile修改 drivers\mtd\onenand\Makefile文件最后添加一行:onenand-objs = s3c_onenand.o,编译s3c_onenand.o,连接进内核。 (四) 在arch\arm\mach-s3c6410\mach-smdk6410.c中 static struct platform_device pmem_gpu1_device = { .name = “android_pmem”, .id = 1, .dev = { .platform_data = &pmem_gpu1_pdata }, }; #endif 的后面添加代码: /add by liuyihui 2009-08-21/ / 添加onenand驱动支持 / / OneNAND Controller / / OneNAND flash controller / #define S3C64XX_PA_ONENAND (0x70100000) #define S3C64XX_SZ_ONENAND SZ_1M static struct resource s3c_onenand_resource[] = { [0] = { .start = S3C64XX_PA_ONENAND, .end = S3C64XX_PA_ONENAND + S3C64XX_SZ_ONENAND – 1, .flags = IORESOURCE_MEM, } }; 或者替换新的代码: arch\arm\plat-s3c64xx\devs.c, linux/arch/arm/mach-s3c6400/include/mach/map.h struct platform_device s3c_device_onenand = { .name = “onenand”, .id = -1, .num_resources = ARRAY_SIZE(s3c_onenand_resource), .resource = s3c_onenand_resource, .dev.platform_data = &s3c_nand_mtd_part_info }; /add end/ 在数组static struct platform_device smdk6410_devices[] __initdata = {的最后添加: &s3c_device_onenand /add by liuyihui 2009-08-21/ (五) 分区表修改:使userdata从0x0a000000开始 文件linux/arch/arm/plat-s3c/include/plat/partition.h中: { .name = “cache”, .offset = MTDPART_OFS_APPEND, .size = (67SZ_1M)+0x1000000,//orig:(67SZ_1M)/modified by cefanty 2009-08-21/ }, (六) 修改drivers\mtd\onenand\generic.c 复制drivers\mtd\onenand\generic.c替换掉。
C. Device Drivers —>Input device support —> [] Keyboards —> (一) 暂时去掉键盘支持,因为键盘占用了GPK14口,GPK14口在M8是USB供电开关的GPIO,拉高才能用USB
D. Device Drivers —> [] USB support —> <> USB Gadget Support —> (一) <> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet supp (二) Ethernet Gadget (with CDC Ethernet support) (三) [ ] RNDIS support (四) d.1)选择Ethernet Gadget (with CDC Ethernet supp,用于把M8模拟成网卡,实现nfs挂载系统。同时去掉RNDIS support支持,因为ubuntu下没有驱动支持。 (五) drivers\usb\gadget\s3c-udc-otg-hs.c修改为USB使用外部晶振 //writel(0x20, S3C_USBOTG_PHYCLK); /commented by liuyihui 2009-08-24/ writel(0x00, S3C_USBOTG_PHYCLK); /00:USB使用外部晶振。modified by liuyihui 2009-08-24*/
2. 驱动移植和修改
A. LCD驱动移植 i. drivers\video\Kconfig,搜索config FB_S3C_LTS222QV,在后面添加如下选项 config FB_S3C_LMS340KC01 bool “LMS340KC01” —help— TBA ii. 添加驱动:drivers\video\samsung\s3cfb_lms340kc01.c a) 复制刘奕辉开发的s3cfb_lms340kc01.c驱动到目录drivers\video\samsung\ b) 在drivers\video\samsung\Makefile文件最后添加内容: obj-$(CONFIG_FB_S3C_LMS340KC01) += s3cfb_lms340kc01.o iii. 修改drivers\video\samsung\s3cfb_fimd4x.c,在函数s3cfb_set_gpio最后注释代码,添加:
#if 0/commented by liuyihui 2009-08-24/ / module reset / if (gpio_is_valid(S3C64XX_GPN(5))) { err = gpio_request(S3C64XX_GPN(5), “GPN”);
if (err) { printk(KERN_ERR “failed to request GPN for ” “lcd reset control\n”); return err; }
gpio_direction_output(S3C64XX_GPN(5), 1); }
mdelay(100);
gpio_set_value(S3C64XX_GPN(5), 0); mdelay(10);
gpio_set_value(S3C64XX_GPN(5), 1); mdelay(10);
gpio_free(S3C64XX_GPF(15)); gpio_free(S3C64XX_GPN(5)); #endif
/add by liuyihui 2009-08-24/ / 打开M8 LCD需要用到的GPIO口 / #if 1 //M8 GPIO set hight / module reset ///LCD_nRESET_SHIFT/4*/ if (gpio_is_valid(S3C64XX_GPQ(4))) { err = gpio_request(S3C64XX_GPQ(4), “GPQ”);
if (err) { printk(KERN_ERR “failed to request GPQ for ” “lcd reset control\n”); return err; } gpio_direction_output(S3C64XX_GPQ(4), 1); } mdelay(100); gpio_free(S3C64XX_GPQ(4));
/ module reset ///LCD_nSS_SHIFT/5/ if (gpio_is_valid(S3C64XX_GPQ(5))) { err = gpio_request(S3C64XX_GPQ(5), “GPQ”);
if (err) { printk(KERN_ERR “failed to request GPQ for ” “lcd reset control\n”); return err; } gpio_direction_output(S3C64XX_GPQ(5), 0); } mdelay(100); gpio_free(S3C64XX_GPQ(5)); / module reset ///LCD_MOSI_SHIFT/7/ if (gpio_is_valid(S3C64XX_GPQ(6))) { err = gpio_request(S3C64XX_GPQ(6), “GPQ”);
if (err) { printk(KERN_ERR “failed to request GPQ for ” “lcd reset control\n”); return err; } gpio_direction_output(S3C64XX_GPQ(6), 1); } mdelay(100); gpio_free(S3C64XX_GPQ(6)); / module reset ///LCD_MOSI_SHIFT/7/ if (gpio_is_valid(S3C64XX_GPQ(7))) { err = gpio_request(S3C64XX_GPQ(7), “GPQ”);
if (err) { printk(KERN_ERR “failed to request GPQ for ” “lcd reset control\n”); return err; } gpio_direction_output(S3C64XX_GPQ(7), 1); } mdelay(100); gpio_free(S3C64XX_GPQ(7)); / module reset ///LCD_CLK_SHIFT/8/ if (gpio_is_valid(S3C64XX_GPQ(8))) { err = gpio_request(S3C64XX_GPQ(8), “GPQ”);
if (err) { printk(KERN_ERR “failed to request GPQ for ” “lcd reset control\n”); return err; } gpio_direction_output(S3C64XX_GPQ(8), 1); } mdelay(100); gpio_free(S3C64XX_GPQ(8));
#endif
return 0; } /add end/ c) iv. 修改drivers\video\samsung\s3cfb_spi.c,在函数s3cfb_set_gpio最后注释代码,添加: 在代码#elif defined(CONFIG_PLAT_S3C64XX)后面添加:
#define MEIZU_M8 #ifdef MEIZU_M8 #define S3C_FB_SPI_CLK(x) (S3C64XX_GPQ(8 + ( 4))) #define S3C_FB_SPI_MOSI(x) (S3C64XX_GPQ(7 + (4))) #define S3C_FB_SPI_CS(x) (S3C64XX_GPQ(6 + (4))) #else #define S3C_FB_SPI_CLK(x) (S3C64XX_GPC(1 + (ch 4))) #define S3C_FB_SPI_MOSI(x) (S3C64XX_GPC(2 + (ch 4))) #define S3C_FB_SPI_CS(x) (S3C64XX_GPC(3 + (ch * 4))) #endif
B. 触摸屏移植 drivers\input\touchscreen:synaptics510_i2c.c,synaptics510_i2c.h,Makefile,Kconfig C. 按键移植 覆盖如下文件:目录drivers\input\keyboard\下的:gpio_keys.c
3. Busybox在Android上的使用
To build busybox • Download the latest version of busybox from the following website. At the time of writing the latest version was v.1.13.3. http://www.busybox.net • Extract the busybox source: tar jxf busybox-1.13.3.tar.bz2 • Configure busybox by running menuconfig cd busybox-1.13.3/ make menuconfig • In menuconfig set the following options Busybox Settings –> Build Options –> Build Busybox as a static binary (no shared libs) – Enable this option by pressing “Y” Busybox Settings –> Build Options –> Cross compiler prefix – Set this option equal to “arm-none-linux-gnueabi-” Busybox Settings –> Installation Options –> Don’t use /usr – Enable this option by pressing “Y” Linux Module Utilities —> [ ] Simplified modutils 这项不能选,否则insmod 驱动模块加载会提示找不到*.ko驱动文件的路径 • Export path to where the cross-compiler is located on the host, for example: export PATH=/opt/arm/arm-2007q3/bin:$PATH • Build busybox make Installing Busybox
To install busybox in the target file-system • Create a /bin directory in the target file-system. For example: mkdir //bin • Copy the busybox binary to the /bin directory in the target file-system cp busybox //bin • Install the busybox command line tools on the target by executing the following commands: cd /bin ./busybox –install Make the Busybox shell the default shell
To make the busybox shell the default shell, edit the file “init.rc” in the target file-system as follows: • Edit the console service so that it runs the busybox shell and not the default shell by replacing: service console /system/bin/sh With: service console /bin/sh • Add the path of the busybox command line tools to the system path variable by replacing: export PATH /sbin:/system/sbin:/system/bin:/system/xbin With export PATH /bin:/sbin:/system/sbin:/system/bin:/system/xbin
Android cupcake 1.5版移植
1. 在Android挂载SD移植
cupcake 1.5版需要改写下列文件。
A. 编译mountd,并在文件系统中启动这一服务。
修改 system/core/mountd/Android.mk文件,开放最后一行
# disabled – we are using vold now instead # include $(BUILD_EXECUTABLE) 为:
# disabled – we are using vold now instead include $(BUILD_EXECUTABLE)
B. 增加 安装mountd.conf 文件
修改 system/core/rootdir/init.rc文件
释放下两行:
service mountd /system/bin/mountd socket mountd stream 0660 root mount C. 修改 system/core/rootdir/Android.mk 文件, 增加 etc/mountd.conf \,如下:
copy_from := \ etc/dbus.conf \ etc/init.goldfish.sh \ etc/mountd.conf \ etc/hosts D. 修改根文件系统的system\etc \mountd.conf文件: block_device /dev/block/mmcblk0
叶问2:宗师传奇.中文无字幕.2010.mp4
内容提要
抗日战争期间,叶问以双拳捍卫国人的尊严,打死日军军官后,在友人的帮助下,携妻带子,逃离佛山,旅居香港,开始新的生活。
碍于生活艰难,叶问不得不开馆收徒,大弟子黄进得叶问亲传,在与当地武馆的切磋中连战连捷,但却被众武馆的话事人洪师傅教训一番,由此引出一场咏春对洪拳的大战!
迅雷下载地址
thunder://QUFodHRwOi8vczUubWVpenU4LmNvbTo4Mi8yMDEwLzA1L01laXp1OC7Sts7KMqO619rKprSrxuYu1tDOxM7e19bEuy4yMDEwLm1wNFpa
人在囧途.M8.mp4
昨天晚上突击了下“人在囧途”。
剧情简介
观后感
电影不像是纯喜剧电影,全剧笑料不多(或者我不会笑?),惹我笑的只有两处。而更多的是对社会现实的描写,剧情有强拼硬凑的感觉(包括对话),不过整体还好。★★★☆☆ 我打三星~~
人在囧途迅雷下载地址:thunder://QUFodHRwOi8vczUubWVpenU4LmNvbTo4Mi8yMDEwLzA2L8jL1NrNvi65+tPv1tDX1i4yMDEwLk1laXp1OC5tcDRaWg==
子腾
早上闺蜜问我:我给我儿子起名叫子腾,你觉得这个名字咋样?我说很好啊,我喜欢!接着闺蜜继续唠叨着,气死老娘了,年轻时我就想好了将来儿子的名字,偏偏嫁了个姓杜的,害得我这个名字没法用!!!!!
第三方开发者看好Android
嫁给程序员的十大好处
找了个程序员做老公,所以认识了很多程序员。以前就没对程序员有过不好的看法,现在则更不会。发现csdn上老有悲观的论调,说程序员找不到老婆。今天我就以一个程序员妻子的身份,来写写找程序员做老公的好处。希望能给各位mm有借鉴,找程序gg做男朋友。 一、找程序员不用担心外遇。程序员是对着电脑工作,周围同事大部分是男生。他的生活中基本接触不到mm,所以不会有办公室恋情的发生,也就不会有外遇问题发生。而且面对的诱少,不像销售啊等职位,需要和外人打交道,而且应酬多,所面对的诱多,外遇出轨问题容易发生。剪剪常常加班到半夜,我是非常放心的,唯一担心的就是他的身体是否吃得消。
二、程序员很老实。在单位,老板让加班就加班。在家里,老婆说啥都听。mm们,有个老实的老公是不是很不错啊。他可能没你想象的那么浪漫,给你惊喜,但他会老老实实记住你说的每句话,按照你的要求去做。
三、程序员很有耐心。这个理由我不多说了,没有耐心的话,怎么写代码。这个在mm当了妈妈会发现是个很好的优点的。我是个没有耐心的人,教小剪学东西他要是学不会,我会没有耐心发脾气的,但是剪剪很有耐心的,会陪他玩,慢慢教会小剪。
四、程序员很细心。写代码是个细活,不细心就会有bug,真写了bug,还得耐心细心的去找出来。在生活中,对于粗枝大叶的mm来说,有个细心的gg照顾不是很好嘛?反正我们家我是粗枝大叶型,剪剪是细心型。
五、程序员很热心。论坛上兄弟们有困难,他们会出手相助。生活中,朋友有电脑问题,他们会帮助解决。我周围的同事好友要是电脑出问题了,都是剪剪帮忙处理的。
六、程序员是IT高手。可能这么说有点夸张,但是身边有个程序员老公,电脑上很多事不用担心的。早到我以前公开教学要做课件,是剪剪帮我做的。到现在家里要弄弄路由器,或者电脑中病毒了重装系统。再到开心网兰蔻粉领丽人评选,剪剪给了技术上的支持。顺带着,“近剪者赤”,看得多了,我也要变成单位里电脑高手了。很多简单问题也能处理了。 七、程序员单纯。不知道是不是所有程序员是这样,反正我家剪是这样,他对别人不会动什么坏心。对外人没坏心,对你也不会有坏心的。曾经碰到个朋友,老公外遇,要离婚,动了很多坏心,在离婚前还把财产都转移了。朋友离婚,钱没有,房子没有,为了这个男人却付出了青春。
八、程序员加班多。可能这是个缺点,但有时也觉得是个优点。他加班多,你可以有个人空间,做做自己喜欢做的事。我同事觉得我比他们自由多了。这得归功于剪剪加班多。他加班多,你可以拿着他卡去shopping。他没时间花钱,你帮他花。而且大部分的程序员都是很大方的,不会说自己太太什么的。
九、程序员可爱。不知道这个是不是和工作性质有关,我认识的程序员们都很老实的,基本没有滑头的。剪剪最老实的事就是,每次工资还没加,就是听到内部风声,就会先告诉我。每次有机会发了现金,其实不告诉我我是不知道的,他也会老交给我。最最可爱老实的一次,是今年公司年会,他中了4000的现金大奖。马上打电话给我。其实他告诉我是两千,我也不知道的。而且晚上回家后,还非要把我摇醒,让我数钱,说是“数钱数到自然醒”。估计那晚是喝多了。
十、程序员有责任心。没有责任心的程序员,写出来的代码都是问题。当然就是因为有了责任心,想给家人过好幸福的日子。才会拼命加班,努力赚钱。我家剪剪如此,我相信所有的程序员们都是这样的。
mm们,选个程序员当老公不会错的。相信我吧!在今后的相处中,你会发现他们越来越多的优点的。 写到这里,后花园的ggdd们拼命在说我这在写他们,其实后花园里的男孩们都不错的。csdn的哪个mm想认识他们,可以回帖。后花园的男孩们,谁想被我在csdn上被写贴推销,可以用可用分来换。根据分数多少,在我帖子里出现的场面多少。
来源:http://topic.csdn.net/u/20091203/20/88dcb738-5925-4ef6-b7f7-a409fb5c9a4e.html?58503
拣到了个手机
拣了个手机,想了想还给失主,于是在他手机里找了个号码打了过去(是失主的妹妹)对方接通后说:哥,什么事?我说:你是这个手机主人的妹妹吗?你哥手机我拣到了!她听后说:哦,你等一下。然后就把电话给挂了。大约两分钟后。这个电话响了,我一接,就听对方是个女的说:哥,你的电话找到了!”
我们一生中要珍惜的5个人
1、一辈子守候在你身边的人—父母
2、总喜欢和你争嘴抢东西,但却默默地爱护着你,你们有最亲密的关系—手足
3、他是你最甜蜜的负荷—恋人
4、无处不在,关心你给你帮助的人—朋友
5、在人生道路中渐渐学会释然,懂得感恩,真诚待人的人—自己
触摸屏全屏浏览器(可定时关机) C#2005 源代码
1、星期一至五,会按设定时间关机,你可以在出现关机提示时点取消(倒计时30秒); 2、星期六日,启动程序即提示关机,无操作则自动关机,若点取消,还会在设定的时间再一次提示关机(倒计时30秒); 3、按*号后输入密码,退出程序回到桌面; 4、参数设置:找到安装目录下的SystemConfig.xml文件,其中starturl为起始网页地址;returntime为多久无操作返回起始网页(单位:分钟);offtime为每天关机时间;exitkey为退出程序的密码; 5、软件需要.NET2.0环境,环境安装包有些大,就不上传了,请到 http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn 下载
开源地址:http://code.google.com/p/full-screen-touch-browser/
可以通过本站下方的EMAIL与作者交流~:)
PHP webservice客户端 推送文章和附件(xsd:base64Binary)
setAttrName('aaa');
$a1->setAttrValue('aaaaa');
$a2 = new Attribute();
$a2->setAttrName('bbb');
$a2->setAttrValue('bbbbbb');
$ar[] = $a1;
$ar[] = $a2;
echo $ar[0]->getAttrName('aaa');
$Article = new Article();
$Article->setArticleContent(mb_convert_encoding('vvvvvvvvvvva.txt...
','UTF-8','GBK')); //文章正文
$Article->setArticleTitle(mb_convert_encoding("12212AAABBBABAAA".date('Ymd'),'UTF-8','GBK')); //文章题目
$Article->setAttr($ar); //文章定制属性组
$Article->setCreateTime(date('YmdHis')); //文章创立时间
$Article->setDepartment("tongjiju"); //用户部门
$Article->setDescription("description"); //文章描述
$Article->setImportant("0"); //文章级别
$Article->setKeyword("keyword"); //文章关键字
$Article->setLoginName("tongjiju"); //用户登录名
$Article->setModifyTime(date('YmdHis')); //文章修改时间
$Article->setPassword("tongjiju"); //用登录口令
$Article->setWebName(mb_convert_encoding("市政府子网站群二期 > 市统计局 > 市情简介",'UTF-8','GBK')); //网站的名称
$Article->setCommendId(0);
$client = new nusoap_client("http://221.122.*.*:7006/cmsweb/services/TransferArticle?wsdl", true);
$err = $client->getError();
if ($err) {
echo "Constructor error
". $err ."
";
}
$godata='';
//文章中存在附件 'finishMark'=>false-------------------------------------------------------------
$godata=array('article'=>$Article,'finishMark'=>false);
$result = $client->call("transferContent", $godata);
if ($client->fault) {
echo "Fault
";
print_r($result);
echo "
";
} else {
$err = $client->getError();
if ($err) {
echo "Error
" . $err . "
";
} else {
echo "Result
";
print_r($result);
echo "
";
}
}
$aid=$result['transferContentReturn'];
if ($aid){
//第一个附件 'finishMark'=>false-------------------------------------------------------------
$filepath='a.txt';
$fp=fopen($filepath, "rb");
$filedata=fread($fp, filesize($filepath));
fclose($fp);
$Appendix = new Appendix();
$Appendix->setFileContent(base64_encode($filedata));
$Appendix->setFileName('a.txt');
$Appendix->setFileType('txt');
$godataf=array('aid'=>$aid,'apd'=>$Appendix,'finishMark'=>false);
$resultf = $client->call("transferAppendix", $godataf);
echo '
';
echo "Result_f
";
print_r($resultf);
echo "
";
//最后附件 'finishMark'=>true-------------------------------------------------------------
$filepath2='tmp.jpg';
$fp2=fopen($filepath2, "rb");
$filedata2=fread($fp2, filesize($filepath2));
fclose($fp2);
$Appendix2 = new Appendix();
$Appendix2->setFileContent(base64_encode($filedata2));
$Appendix2->setFileName('tmp.jpg');
$Appendix2->setFileType('image_title');//image_title 此图片为标题图
$godataf2=array('aid'=>$aid,'apd'=>$Appendix2,'finishMark'=>true);
$resultf2 = $client->call("transferAppendix", $godataf2);
echo '
';
echo "Result_f2
";
print_r($resultf2);
echo "
";
}
?>
PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)
1、使用SaveAsPDFandXPS将office文档转换成PDF
http://www.microsoft.com/downloads/details.aspx?FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041&displaylang=en
微软原计划让Office 2007直接支持保存为PDF格式,但引起了Adobe的不满,并被指责为垄断,最终被迫放弃,改为以插件的形式予以支持,插件大家都知道怎么回事儿,默认不装,要用你的自己找来装上。不过微软针对这件事情也做出了一个回应:发布XPS, XPS则是微软自己利用XML技术开发的新型文档格式。
该插件支持Office 2007的8个组件,包括Word、Excel、Access、PowerPoint、InfoPath、OneNote、Publisher和Visio。安装插件后,用户即可在上述组件中将相应文档存储为PDF格式或XPS格式,还可以方便地将文档保存为PDF/XPS格式的E-mail附件。
2、下载 SWFTools
SWFTools 是一组用来处理 Flash 的 swf 文件的工具包,包括:
- 合并工具 swfcombine
- 抽取工具 swfextract
- PDF/JPEG/PNG/AVI/TTF/WAV 到 SWF 的转换工具 :pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, and wav2swf|
- 文本解析工具 swfstrings
- SWF 解析器 swfdump
- SWF 读写库 rfxswflib
其中把pdf转成swf的工具就是pdf2swf了。在命令行中运行pdf2swf src.pdf des.swf一般能满足需求。而命令行参数可以通过pdf2swf -f得到:
-h , –help Print short help message and exit 打印帮助信息 -V , –version Print version info and exit 打印版本号 -o , –output file.swf Direct output to file.swf. If file.swf contains ‘13568621′ (file13568630.swf), then each page指定输出的swf文件名 -p , –pages range Convert only pages in range with range e.g. 1-20 or 1,4,6,9-11 or 指定转换的页面范围,使用的页码描述方法与打印机打印文件时候的选页一样
-P , –password password Use password for deciphering the pdf.指定打开pdf的密码 -v , –verbose Be verbose. Use more than one -v for greater effect.转换时输出详细的内容 -z , –zlib Use Flash 6 (MX) zlib compression.使用Flash 6的zlib压缩机制 -i , –ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated允许程序修改pdf的绘制顺序,可能会导致结果与原来有差异 -j , –jpegquality quality Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)设置转换其中的jpeg图片的质量,从0到100,默认值是85。 -s , –set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information. 设置SWF转码时候的参数,具体参数可以用pdf2swf -s help获取 -w , –samewindow When converting pdf hyperlinks, don’t make the links open a new window. 设置转换后的swf打开原pdf中的连接时使用相同的窗口 -t , –stop Insert a stop() command in each page. 在每页结尾添加一个stop()命令 -T , –flashversion num Set Flash Version in the SWF header to num. 设置SWF所使用的flash版本号 -F , –fontdir directory Add directory to the font search path. 指定字体文件所在路径 -b , –defaultviewer Link a standard viewer to the swf file. 指定默认的swf导航文件,用来翻页、放大缩小等等 -l , –defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading. 指定默认的swf加载文件,用来显示加载进程效果 -B , –viewer filename Link viewer filename to the swf file. 指定swf导航文件,作用同-b -L , –preloader filename Link preloader filename to the swf file. 指定swf加载文件,作用同-l -q , –quiet Suppress normal messages. Use -qq to suppress warnings, also. 不打印普通信息,用-qq就不打印警告信息。 -S , –shapes Don’t use SWF Fonts, but store everything as shape. 不使用字体,所有都转为形状。 -f , –fonts Store full fonts in SWF. (Don’t reduce to used characters). 在swf中保存全部字体。 -G , –flatten Remove as many clip layers from file as possible. 在文件中尽量去除影片层,合并它们 -I , –info Don’t do actual conversion, just display a list of all pages in the PDF. 不做实际转换,仅显示PDF的信息。 -Q , –maxtime n Abort conversion after n seconds. Only available on Unix. 如果运行时间超时则退出。
3、java程序,实现上传PDF自动转换成SWF文件
//ajax方法,先解密传过来的文件名,根据判断生成SWF文件后跳转至FLASH页面
if (ajaxAction.equals("exeflash")) //把PDF成SWF
{
String fn = DecodeUtil.Decrypt(StringUtil.null2String(request.getParameter("fn")).trim()).toLowerCase();
try {
if (!"".equals(fn) && fn.indexOf("/") > -1 && fn.indexOf(".pdf") > -1) {
Map webfileupmap = (Map) Globals.SYS_UPLOAD_CONFIG.get("webfile");
String webfilepath = StringUtil.null2String(webfileupmap.get("path")).replace("\\", "\\\\");
fn = fn.substring(fn.lastIndexOf("/") + 1);//aa.pdf
webfilepath = webfilepath + fn;
File f = new File(webfilepath);
if (!f.exists()) {
return "error";
//如果PDF文件不存在则退出
}
Map webupmap = (Map) Globals.SYS_UPLOAD_CONFIG.get("web");
String webpath = StringUtil.null2String(webupmap.get("path")).replace("\\", "\\\\");
String urlpath = StringUtil.null2String(webupmap.get("urlpath"));
String wname = fn.substring(0, fn.indexOf(".")) + ".swf";
webpath = webpath + wname;
String wurl = urlpath + wname;
boolean issc = false;
File f2 = new File(webpath);
if (!f2.exists()) {
issc = true;
//如果文件不存在则生成
}
if (issc) {
String cmd = "C:\\SWFTools\\pdf2swf " + webfilepath + " -o " + webpath + " -T 9";
if (StringUtil.executeCmdFlash(cmd) == false) {
return "error";
}
System.out.println("cmd::::::" + cmd);
}
File f1 = new File(webpath);
if (f1.exists()) {
ajaxstr = DecodeUtil.Encrypt(wurl);
}
} else {
return "error";
}
} catch (Exception e) {
Globals.Logger("发生错误:" + e, 2);
}
}
注意:
String cmd = “C:\SWFTools\pdf2swf ” + webfilepath + ” -o ” + webpath + ” -T 9″;
加 “-T 9” 参数,设置输出版本为flash9,解决PDF文件只有一页,生成的swf不能播放的问题。
另外,若PDF内表格元素过多,在转换时会抛出一堆异常错误。似乎还没有好的解决办法?
//java调用cmd命令行方法
/**
* 运行可执行文件
*
* @param cmd
* @return String
*/
public static synchronized boolean executeCmdFlash(String cmd) {
try {
final Process process = Runtime.getRuntime().exec(cmd);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
process.destroy();
}
});
InputStreamReader inputstreamreader = new InputStreamReader(process.getInputStream());
char c = (char) inputstreamreader.read();
if (c != '\uFFFF')
stdout.append(c);
while (c != '\uFFFF') {
if (!inputstreamreader.ready()) {
System.out.println(stdout);
try {
process.exitValue();
break;
}
catch (IllegalThreadStateException _ex) {
try {
Thread.sleep(100L);
}
catch (InterruptedException _ex2) {
}
}
} else {
c = (char) inputstreamreader.read();
stdout.append(c);
}
}
try {
inputstreamreader.close();
}
catch (IOException ioexception2) {
System.err.println("RunCmd : Error closing InputStream " + ioexception2);
return false;
}
} catch (Throwable e) {
e.printStackTrace();
Globals.Logger("发生错误:" + e, 2);
return false;
}
return true;
}
4、利用FlexPaper展示
FlexPaper是一个被设计用来与PDF2SWF一起使用,开源轻量级的在浏览器上显示各种文档的组件, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。
SwfFile : escape(host+"/upload/web/2010-05-24-10-21-51139.swf"),
Scale : 0.6,
ZoomTransition : "easeOut",
ZoomTime : 0.5,
ZoomInterval : 0.1,
FitPageOnLoad : false,
FitWidthOnLoad : true,
PrintEnabled : false,
FullScreenAsMaxWindow : true,
localeChain: "zh_CN" //设置为中文
};
5、演示地址
http://www.4th-games.org.cn/sis/public/info.html?doAction=scsg&bsdxid=1009&cdate=all
iphone4 能卖2W的原因
万众期待的iPhone 4虽然已正式在多个国家发售,但尚未引入中国市场。为了第一时间拿到这款经典产品,国内一些发烧友和时尚人士纷纷将视线转向了水货市场。
日前,记者在中关村走访时发现,由于绝大部分销售苹果产品的店面并无现货,iPhone 4的价格也一路飙升,原来15000元一台的预订价到现在已经突破两万。
在中关村某苹果销售店,在被问及iPhone 4的价格时,其店员开出了每台2万元的“天价”,该人员还称目前中关村现货iPhone 4只有3台,大批量的到货仍然遥遥无期。记者正和店员交流期间,一位中年顾客带着年轻女友前来询问iPhone 4情况,在被告知2万元的价格时,该顾客认为价位还算适中,并当场表示购买,但由于该店并无现货,最终未能成交。
另据称,前一段时间价格已经达到4200元左右的水货iPad,也因为缺货的原因,报价上升到5100元左右。
来源:CCTIME飞象网
周鸿祎:成功靠不攀比不跟风做事装孙子
不久前,在一次云集了中国IT界众多巨头的精英聚会上,雅虎创始人杨致远、网易总裁丁磊等人都盛装出席。只有一个人与众不同,他穿着T恤和短裤,高调步入会场。先到的大腕们相继起身,跟他握手。环球人物杂志记者当时就在现场,听见身旁的同行说:“他就是周鸿祎(音同‘衣’)。”
今年40岁的周鸿祎,是来自湖北黄冈的一位IT界风云人物。1995年在西安交通大学系统工程系获得硕士学位后,只用了短短几年,他就成了中国IT界谁也不敢忽视的人物——1998年10月创建3721公司,推出3721“网络实名”,开创了中文上网服务;2004年3月出任雅虎中国区总裁;2006年成为奇虎360公司掌门人,推出360安全卫士软件(以下简称“360”)等产品……与此同时,他不断“炮轰”同行,或“揭别人老底”,致使百度老板李彦宏、杨致远、丁磊等,都成了他的“敌人”。
周鸿祎似乎总有奇思妙想。他现在全力推广的360免费杀毒软件,在其他IT界巨头看来就是“不按江湖规矩出牌”。而且,为了这款免费杀毒软件,他不惜再次启动“炮轰”行动。5月25日下午,周鸿祎忽然连发46篇微博,猛烈抨击老牌杀毒软件企业金山公司的产品。后者不甘示弱,立即反唇相讥。一时间,杀毒软件行业“硝烟又起”。
“我一直坚信,只要对用户好一点,就一定会有回报”
环球人物杂志:创业至今,您创造了众多品牌,包括3721“网络实名”、360等,您最满意其中的哪个产品?
周鸿祎:3721已经不是我的产品了,我很后悔2003年把它卖给雅虎;做奇虎也犯过很多错误,不够专注。比较满意的是360。你想想,以前装个杀毒软件是多么奢侈的一件事啊,所以很多网民选择“裸奔”(注:指电脑上不安装杀毒软件)。但360让网民不花钱就能用上优秀的杀毒软件,这是它最成功的地方。
环球人物杂志:这种免费模式能存在多久?
周鸿祎:我一直坚信,只要对用户好一点,就一定会有回报。除了360,中国的其他“免费软件”都是假免费。360将是永远真正免费的杀毒软件,我们的用户不必为杀毒软件再花一分钱!不仅如此,我们的免费杀毒软件比收费的还要好,这就是高品质服务。我看到有网友在微博上说,“要是360哪天撑不下去了,咱们每人一块钱,募捐支持360”。说实话,我对此非常感动。但话说回来,360肯定不会走到那一步。
环球人物杂志:那360靠什么盈利呢?
周鸿祎:我觉得,盈利与否关键还是看产品好不好、受不受用户青睐。免费模式积累了大量的用户群之后,就可以在此基础上推出各种增值服务。在获得海量用户的基础上,360也会推出一系列个性化、收费的增值服务。这种服务并不是每个人都需要的,但只要海量用户中的少数人喜欢,并愿意付费,那加起来的总和就会很大,足以支撑我们公司的进一步发展。
环球人物杂志:回顾这条免费之路,您有什么感受?
周鸿祎:如果不走免费模式,我们一定会有比现在更大的既得利益,“敌人”会少很多,日子也会过得很轻松。我周鸿祎为什么一定要做免费杀毒软件?因为现在的杀毒软件已经不是一种单纯的软件,而成了一种服务,这是互联网必然的趋势。如果有100万用户的话,卖传统的杀毒软件一年可以挣10亿元。但是,中国的绝大多数网民是不会花钱去买杀毒软件的。对他们来讲,你的产品有什么用呢?坦率地说,我希望通过免费模式让360上市,能让我在这个圈子里留下一笔。如果有人说“周鸿祎保护了广大网民的电脑不受病毒侵害”,我就满足了,这是用多少钱都买不来的。360是一家老百姓离不开的公司。
“这是我们的免费模式和传统收费模式之间的战斗”
环球人物杂志:现在,网上对360和一些公司的争执众说纷纭,您对此怎么看?
周鸿祎:这是我们的免费模式和传统收费模式之间的战斗。我们的永久免费原则,得罪了一些正在生产杀毒软件的企业。一直以来,金山公司对我们做了很多低劣的“小动作”。比如说,用户用360的浏览器点击一个朋友传给你的网页链接,360就会检查这个网页是否带有病毒等。但如果用户电脑里还安装了其他品牌的同类软件,那么,一点击这个链接,就会出现一个对话框——“360浏览器不安全”等。这简直就是不正当竞争啊!
从用户角度来说,某些品牌的产品已经影响了360正常的病毒防护功能。这些企业拒不认错和不改正错误的态度,已经导致其成为为病毒放行的“大漏斗”。我现在把决定权交给用户,如果用户觉得别的软件好,那么完全可以卸载360。360一直以来都可以轻易卸载。而如果你觉得360好,那么就请卸载对我们不友好的软件。
环球人物杂志:最近,您又和卡巴斯基(另一种杀毒软件)发生了一些争论。您说过,“没有360,卡巴斯基就不会卖这么好”。这种说法是不是有些“狂”?
周鸿祎:2006年7月到2010年5月,卡巴斯基的市场份额有一个有意思的现象:与360合作(注:卡巴斯基将360作为销售平台)期间,它在中国市场上的份额从不到20%增长到了30%;不与360合作后,其市场份额2010年4月下降到了不到5%。这难道还不能说明问题吗?
“做事要踏实,不要看一时热闹就轻易跟风”
环球人物杂志:有人说您“见谁斗谁”,您如何回应?
周鸿祎:你不觉得有争议其实是一件好事吗?真理越辩越明。有了争议,就会有更多的人参与讨论,更多的人就能了解真相、进行思考。我周鸿祎说话不好听,大家都知道,但我保证我说的是实话。我说的任何一句话,我都可以负责。如果有人觉得我说的不对、不真实,可以告我诽谤。我就是一个平民、一个爱说真话的草根。我不在乎自己在别人心里的形象,因为那是真实的形象,越真实的东西才越有说服力。
环球人物杂志:真实的周鸿祎是什么样?
周鸿祎:真实的我,就是一个推动了网络免费安全、免费杀毒、消灭“流氓软件”、保护了几亿网民的人。我爱说真话,加上我断了很多人的财路,因此一直有人妖魔化我。我们公司希望我保持一个大领导的形象,但穿西装、打领带时我就是不自在。我不是精装版的,我是平装版的。
环球人物杂志:您的确跟很多人不同,那么请谈谈您的成功秘诀。
周鸿祎:一是不要去攀比,要做别人没做过的事情。二是做事时要低调,用俗话说就是要装孙子,别装大爷。三是做事要踏实,不要看一时热闹就轻易跟风。
责任编辑:quanzhenxiang 摘自:http://news.itxinwen.com/Top_Talk/2010/0628/146488.html
睡眠不足的惊人恶果
stranger ( @wmrofficial ) 写道 “成年人通常需要每晚睡7到9个小时才能感到恢复彻底、状态良好。然而,美国人的睡眠时间与过去相比越来越少。全国睡眠基金会在2005年的一次调查中发现,美国人平均睡眠时间为每晚6.9个小时,与19世紀过相比,每晚减少约2小时,与50年前相比,每晚减少1小时,甚至与2001年相比也减少了约15至25分钟。 遗憾的是,我们没有很好地意識到睡眠不足的不良影响。宾夕法尼亚大学的研究人员要求志愿者在两周时间内每晚睡眠时间少于6小時。这些志愿者只是稍稍感到睏意,并认为他们的身体運轉相对正常。然而,測試表明,两周时间里,他们的认知能力和反应时间逐渐下降。到测试结束时,他们健康受损程度那些48小时不睡覺的实验对象是一样的。 不仅如此,睡眠过少的后果可能不只是认知能力和情绪问题。芝加哥大学的研究人员已经证明,睡眠过少能够改变体内某些激素的分泌。这些变化会促进食欲,削弱对饱食的感觉,井改变身体对糖类摄入量的反应,导致体重增加,增加患糖尿病的风险。
由凯斯-西部保留地大学医学院的苏珊·雷德兰及其同事进行的一项研究显示,高中生的睡眠时间与肥胖程度成反比。睡眠时间越短,超重的可能性就越大,睡眠时间为6到7个小时的学生身体超重的可能性是睡眠超过8小时的那些学生的2.5倍以上。
在人们发现睡眠不足和肥胖之间可能存在联系之前,研究人员已经把睡眠不足和高血压、心脏病患病几率加大联系起来。
好消息是,充足的睡眠可以抵消这些影响。研究发现,让实验對象連續兩天睡10个小时可以把激素水平平恢復到正常,饥饿感和食慾水平下降近25%。”
FBI未能破解加密硬盘
新闻来源:solidot.org FBI在经过一年的尝试后,还是未能破译被巴西执法机构指控金融犯罪的巴西银行家的加密文件。巴西一家葡萄牙语报纸报道(葡萄牙语),巴西联邦警察在2008年7月展开的Satyagraha行动中,在银行家Daniel Dantas位于里约热内卢的公寓内收缴了5个硬盘。
文章提到硬盘使用了两种加密程序,一种是Truecrypt,另一种是不知名的256位AES加密软件。 在专家未能破解密码后,巴西政府在2009年初请求美国提供帮助,然而美国联邦警察在一年不成功的尝试后,退还了硬盘。 巴西现有的法律中不存在强制要求Dantas交出密码的规定。
iPhone 4国内信号测试(视频)
notate:机器是日本有锁版,恰巧回国就有幸可以测试一下大家所担心的信号问题。 SoftBank国际漫游到中国可以选移动联通这两个运营商,所以分别做了测试。
