总体计划,读一本微观经济学入门书籍,一本金融学入门书籍,一本会计学中级书籍,一本历史书。

目前的读书书目有:

《经济学原理》作者 曼昆 豆瓣链接

《经济漫谈录》作者:历以宁 豆瓣链接

《财务会计 — 概念、方法与应用》 作者 豆瓣链接

《思考与回忆》 作者:俾斯麦 豆瓣链接

《佛罗伦萨史》作者:尼科洛·马基雅维里  豆瓣链接
链接:
http://www.qingran.net/2010/05/2010%e5%b9%b4%e8%af%bb%e4%b9%a6%e8%ae%a1%e5%88%92/
http://labs.adobe.com/downloads/flashplayer.html

Download Flash Player for Opera and Chromium based applications – PPAPI :
https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/install_flash_player_ppapi.exe


IE6: 只要把flash所在层的z-index属性设为-1即可;

IE7和IE8: 再给flash的<object>对象增加一个"womde"参数,参数的值为"transparent"或"opaque"都行;

FF、Chrome、Opera: 在IE8的基础上再在<embed>标签内添加属性wmode="transparent"或wmode="opaque"。

完整的实例代码如下:



<div style="z-index:-1;">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="900" height="150">
    <param name="movie" value="i/banner.swf" />
    <param name="quality" value="high" />
    <param name="wmode" value="transparent">
    <embed src="i/banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="900" height="150" wmode="transparent"></embed>
    </object>
</div>
http://tiaozhanshu.net/flash-player-for-chrome.html
安装了新电脑:windows7 64的,想装个盗版的防范毒,windows7感觉还行,不要钱嘛,不错的,哈哈!
今天NOD32激活码之窗为大家带了一个小小的NOD32相关教程:那就是去除NOD32开机激活向导.这个方法很古老也很有效的哟.也许网上已经很多了.本站只是整理下.还是否请大家多多支持:大家可以将下面的代码另存为BAT批处理文件即可.请大家注意.双击运行即可.代码如下:


@ ECHO OFF
@ ECHO.
@ ECHO.
@ ECHO.                            说   明
@ ECHO ———————————————————————–
@ ECHO 如果安装了NOD32激活版而没有激活,开机后激活程序会自动弹出,本批处理就
@ ECHO 是方便用户解决此问题。
@ ECHO                   http://www.nod32id.com                        
@ ECHO ———————————————————————–
PAUSE
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v essact /f
nsession.sql
===========================================================================
create table mysession(
session_key char(32) not null,
session_data text,
session_expiry int(11),
primary key(session_key)
);


session_inc.php
============================================================================

<?php

function mysession_open($save_path, $session_name)
{
//echo ''save_path ''.$save_path.''<br />'';
//echo ''session_name ''.$session_name.''<br />'';
@mysql_connect("localhost", "root", "171084") //选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test") //选择数据库mydb
or die("数据库不存在或不可用");
return true;
}

function mysession_close()
{
return true;
}

function mysession_read($key)
{
//echo ''key ''.$key.''<br />'';
// @mysql_connect("localhost", "root", "171084") //选择数据库之前需要先连接数据库服务器
// or die("数据库服务器连接失败");
// @mysql_select_db("test") //选择数据库mydb
// or die("数据库不存在或不可用");
$expiry_time = time(); //获取Session失效时间
//执行SQL语句获得Session的值
$query = @mysql_query("select session_data from mysession "
."where session_key = ''$key'' and session_expiry > $expiry_time")
or die("SQL语句执行失败");
if($row = mysql_fetch_array($query))
return $row[''session_data''];
else
return false;
}

function mysession_write($key, $data)
{
//echo ''write: ''.$key.''<br />'';
//echo ''data ''.$data.''<br />'';
// @mysql_connect("localhost", "root", "171084") //选择数据库之前需要先连接数据库服务器
// or die("数据库服务器连接失败");
// @mysql_select_db("test") //选择数据库mydb
// or die("数据库不存在或不可用");
$expiry_time = time() + 5; //获取Session失效时间
//查询Session的键值是否已经存在
$query = @mysql_query("select session_data from mysession "
."where session_key = ''$key''")
or die("SQL语句执行失败");
//如果不存在,则执行插入操作,否则执行更新操作
if(mysql_numrows($query) == 0)
{
//执行SQL语句插入Session 的值
$query = @mysql_query("insert into mysession values(''$key'', ''$data'', $expiry_time)")
or die("SQL语句执行失败");
}
else
{
//执行 SQL语句更新Session的值
$query = @mysql_query("update mysession set "
."session_data = ''$data'', session_expiry = $expiry_time "
."where session_key = ''$key''")
or die("SQL语句执行失败");
}
return $query;
}

function mysession_destroy($key)
{
// @mysql_connect("localhost", "root", "171084") //选择数据库之前需要先连接数据库服务器
// or die("数据库服务器连接失败");
// @mysql_select_db("test") //选择数据库mydb
// or die("数据库不存在或不可用");
//执行SQL语句删除Session
$query = @mysql_query("delete from mysession where session_key = ''$key''")
or die("SQL语句执行失败");
return $query;
}

function mysession_gc($expiry_time)
{
// echo "gc called ";
// @mysql_connect("localhost", "root", "171084") //选择数据库之前需要先连接数据库服务器
// or die("数据库服务器连接失败");
// @mysql_select_db("test") //选择数据库mydb
// or die("数据库不存在或不可用");
$expiry_time = time();
//执行SQL语句删除Session
$query = @mysql_query("delete from mysession where session_expiry < $expiry_time")
or die("SQL语句执行失败");
return $query;
}
// $domain = '''';
//不使用 GET/POST 变量方式
ini_set(''session.use_trans_sid'', 0);
//设置垃圾回收最大生存时间
ini_set(''session.gc_maxlifetime'', 5);
//使用 COOKIE 保存 SESSION ID 的方式
//ini_set(''session.use_cookies'', 1);
//ini_set(''session.cookie_path'', ''/'');
//多主机共享保存 SESSION ID 的 COOKIE
//ini_set(''session.cookie_domain'', $domain);
//设置用户自定义Session存储
ini_set(''session.save_handler'', ''user'');

session_set_save_handler(''mysession_open'',
''mysession_close'',
''mysession_read'',
''mysession_write'',
''mysession_destroy'',
''mysession_gc'');
?>


test.php
================================================================================

<?php
include(''session_inc.php''); //包含session_set_save_handler定义的文件
session_start();
$_SESSION[''passed''] = true;
echo $_SESSION[''passed''];
?>

爱上游戏私服网,23yx.com
目前基本可用,但sess_gc没有被执行,不知为何。。。
sess_gc是按一定的概率被调用的。可以设置
session.gc_probability 与 session.gc_divisor 合起来用来管理 gc(garbage collection 垃圾回收)进程启动的概率。默认为 1。详见 session.gc_divisor。
session.gc_divisor与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。
session.gc_divisor 默认为 100。
ini_set(''session.gc_probability'', 50);
ini_set(''session.gc_divisor'', 100);


还发现PHP牛的一点,如果客户端禁用 cookie,只要
ini_set(''session.use_trans_sid'', 1);
它会自动把session id 附在链接后。Session 就可以正常使用了。
来源:http://www.23yx.com/Article_View.asp?id=43
http://baike.baidu.com/view/1193094.htm?fr=ala0_1
Java中:
用了enctype="multipart/form-data"  
  就不能getParmeter了因为  
  他是一个特殊的标记啊  
  只能通过特殊的方法得到需要的数值啊

你的这种方法我没试过,我是用jspSmartUpload上传的,enctype="multipart/form-data"和 request.getParameter()确实不能同时使用,但这个组件提供了替代的方法:new   SmartUpload().getRequest()返回一个Request类型对象,这个对象提供了替代的方法,有兴趣可以参考一下.

PHP:
评优系统用到了Excel表的上传:


<FORM METHOD="POST" ACTION="3231313.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<input type="SUBMIT" value="上传" />
</FORM>


代码解释:

ENCTYPE="multipart/form-data"用于表单里有图片上传。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application /x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作:
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:

SmartUpload su = new SmartUpload();//新建一个SmartUpload对象

su.getRequest().getParameterValues();取数组值

su.getRequest().getParameter( );取单个参数单个值


原因:
一旦在网页post中加入了ENCTYPE="multipart/form-data"就是以二进制传输,而不加入就直接传输,php会自动根据这个bondary去做二进制的解析,而Java不会,所以,我们在上传图片的时候必须加入这个form-data,图片是以二进制形式上传的,所以,我们必须加入,否则就没法传到服务端去做解析。服务端就那么编写的,就这个原因,无它。
sshfs -p 36000 gastonwu@172.25.38.70:/home/gastonwu ~/dev70

samba服务mount方法:

mount -t smbfs -o username=peter,password=hello //192.168.7.123/ok



直接yum得了,安装麻烦啊:
[root@localhost fuse-2.7.4]# yum -y install sshfs
Loaded plugins: fastestmirror
Determining fastest mirrors
* addons: mirrors.163.com
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
addons                                                                                                       |  951 B     00:00    
base                                                                                                         | 2.1 kB     00:00    
extras                                                                                                       | 2.1 kB     00:00    
extras/primary_db                                                                                            | 180 kB     00:00    
updates                                                                                                      | 1.9 kB     00:00    
updates/primary_db                                                                                           | 616 kB     00:00    
Setting up Install Process
No package sshfs available.
Nothing to do



还是不行:接着弄
yum -y install kernel-devel

[root@localhost fuse-2.7.4]# ls -l /usr/src/kernels/
drwxr-xr-x 19 root root 4096 05-10 22:32 2.6.18-164.15.1.el5-i686
drwxr-xr-x 19 root root 4096 01-05 21:47 2.6.18-164.el5-i686
[root@localhost fuse-2.7.4]# ./configure --with-kernel=/usr/src/kernels/2.6.18-164.15.1.el5-i686;make;make install

由于工作需要,需将一台windows2008主机硬盘挂载到一台CentOS主机上,网上查找资料经整理测试,步骤如下:

1、yum -y install sshfs       //下载安装sshfs

2、mkdir /mnt/test              //创建一个挂载点test

3、在windows2008主机上下载安装SSH工具(如F-Secure SSH Server)

4、在windows主机上开启SSH服务

5、sshfs administrator@192.168.1.112:/ /mnt/test      //挂载远程主机(假设远程主机的用户名是administrator,之后提示输入密码时,输入windows密码)

6、cd /mnt/test                //进入挂载目录

7、ls                           //查看目录文件

8、umount /mnt/test    //卸载挂载目录

注意: sshfs是基于fuse模块的,如果在安装sshfs后无法运行,请下载编译这个模块(很多linux系统内核中基本都编译过了)

wget http://voxel.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.4.tar.gz
tar zxpfv fuse-*.gz
cd fuse*
./configure

参考:http://crazytoon.com/2008/10/07/sshfs-how-do-you-install-sshfs-and-fuse-centoslinuxredhat/

windows之外的世界比想像中要大得多呢,几乎天天都在用ssh,却到今天才知道有sshfs这个好东西,前几天还在为ZendStudio可以远程编辑文件欣喜,惭愧啊,终于有比vi scp://hostname//path/to/file更方便的方式了。

sshfs,就是可以把ssh连接到的主机资源,映射到本机的文件系统当中,然后用户可以像操作本地文件一样操作,而实际的文件改动将通过ssh传输到远程主机当中。类似于mount了一个windows共享目录,或者另外一台linux主机的samba共享,或者是nfs共享,只是“共享协议”变成了ssh通道罢了。

ubuntu源中已经包含了sshfs了,以及所需的fuse包,直接apt安装就可以了,一共是三个包:“fuse-utils libfuse2 sshfs”,不大,加起来才179k。安装的时候会自动创建用户组fuse,要使用sshfs的用户需要先加到这个用户组里才行(记得完成后还要重新登录),不然会没有权限执行fusermount:

fuse: failed to exec fusermount: Permission denied

使用就简单的多了,一般来说,连接远程主机到本地用户:

sshfs user@hostname:path mount_point

需要输密码就输密码,当然配置成自动登录的ssh更方便了。用完之后要umount,可以:

fusemount -u mount_point

都是在普通用户非sudo的环境下使用,非常方便的。如果想每次开机都自动挂载,可以在/etc/fstab中加入:

sshfs#user@hostname:path mount_point fuse defaults,auto,allow_other 0 0

这就要求必须先把ssh自动登录配置好了,让root用户能够使用user身份登录远程主机,另外allow_other这个参数很重要,没有这个参数的话,挂载过来的目录只有root能够访问。

关于自动挂载,参考文章中andot用脚本实现的方式也不错,建议大家看看去。
来源:http://www.fwolf.com/blog/post/329
 南方网讯 风险投资者将努力寻求七种基本素质,这不意谓他们在寻求七种素质不同的人,而是希望其寻求的人在这些方面应该高质量。如果你在这些方面质量很高,即使其它方面有严重缺陷,对方也可原谅。由于不同的风险投资者对企业家的素质要求可能各有不同,而且行业不同对企业家基本素质的要求也各具特色,因此,这里只能粗略介绍对企业家的基本素质要求,并不是说每个企业家都必须具备一切良好素质。但每一个都应有自己的特长所在。综合分析以下七种素质,多数风险投资者以为,忠诚正直应居首位。阅读全文
//这位台湾的高手把GTK+, Qt, wxWidgets比较分析得相当到位。

GUI toolkit

先讲 GTK+
GTK+ 主要用在 X Window 上,整个设计的架构和许多概念和 MFC 以及一般 Windows 上
的程式开发大异其趣,入门门槛较高,而且最主要的特色是,他用不具有物件功能的纯
"C" 语言,模拟物件导向。 所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错
都不是很容易,但优点则是可以用 C,不需 C++,如果和 Win32 SDK 比较,不会难学
多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其他
无所不包的 library,是简陋了一点,函数命名又臭又长。 对於简单的程式,GTK+ 会
显得太复杂,但是当你开始想扩充其他 library 也都没提供的进阶功能,就会开始赞叹
GTK+ 的架构严谨,还有超乎想像的高度弹性。 同样的东西要用 MFC 来做反而会要人命
并且多国语言的支援良好,内部也全面使用 UTF-8,相容性好,又是 unicode
能够习惯的话,GTK+ 值得推荐,但没有很建议学,毕竟不好学,要用到熟会需要比
较久,而且那样很多 C++ 的功能会用不到。 GTK+ 有 C++ 版本叫做 GTK--,没用过
但看文件觉得,并没有比 gtk+ 简单到哪里去。 因为 gtk+ 本来就是物件导向,所以
即使换了 c++ 语言,写起来架构还是差不多的。 另外,gtk+ 有 Windows 版本,但缺
点是,执行缓慢,不稳定,而且介面是使用 gtk+ 自己的,不是使用 Windows 内建的
"Native" 原生图形介面,看起来会不太习惯。 Mac OS X 下可用 X11 来执行 gtk+
但那样出来的程式是长得像 UNIX 程式,而不是美美的 OS X Aqua 外观

wxWidgets 和 MFC 最接近,命名习惯或架构都高度相似,会 MFC 几乎不用重新学习
有十余年历史,此外,他的物件封装比 MFC 要好,提供的功能也多上太多,又跨平台
一般知名的 MFC 程式都会选择用 wxWidgets 改写,来快速移植原程式到其他平台
例如 eMule 用 wxWidgets 移植出 aMule, xMule, 还在开发中的 Filezilla 3...等
而他最主要的特色是,他是"跨平台"的 "Native" GUI toolkit,在各种平台上都可写出
使用该平台内建 Native 原生图形介面的程式。 在 Windows 上就长得跟其他 Windows
程式一样,在 Linux 下就使用 gtk+ 的图形介面,在 Mac OS X 下就可以使用华丽的
Aqua 外观风格,这点是非常强悍。 不像 gtk+ 到其他系统都还是只能用 gtk+ 自己的
缺点是,中文支援在有些地方会出问题,例如剪贴簿的操作。 得自己 patch
但仍然相当推荐,即使是个庞大的 library,效能依旧不会太差,尤其在 Windows 上
执行速度并不输 MFC,与其学 MFC,不如学 wxWidgets。

Qt 的功能,应该是这三者加上 MFC 之中最强大的,文件也很完整,又有 RAD 工具
可以辅助开发,并且有商业公司做强力后盾。不但有 Windows/X Window/Mac 版本,
甚至还有嵌入式系统可用的版本,稳定性还不错,物件封装也算良好,资源比 GTK+ 或
wxWidgets 多得非常多,而且发行公司提供了相当多范例,算是一家以开放原始码成功
营利的模范公司。 知名的 KDE 整个是用他开发,证明了他的稳定性和强大功能。
缺点是如果你用他开发非 GPL 开放程式码的软体,必须以极昂贵的金额,购买商业
版本。 而他的图形介面并不完全是 "Native GUI",只是透过 theme 去模拟系统上的
标准 GUI,所以看起来很像,却会有些地方可以明显看出破绽。 执行速度缓慢还有过於
庞大则是另一个问题。 虽然封装得很良好文件也齐全,并不代表他就很容易学
还有一个严重问题是,他写的不是标准 C++,他使用的 signal/slot 机制必须透过 Qt
提供的 preprocessor 处理过才可以转送给编译器,这部份可能被限定用 qmake,算是
一个可惜的地方,不过瑕不掩瑜,还是很推荐。忘了说,他内部也是 unicode,
多国语言没问题。

以上三套只是简单介绍,其中 Qt 的程式我没有实际完整开发过,但明显的三套都远远比
只能在 Windows 上用,功能少 Bug 多难学难用几乎无多国语言支援的 MFC 要强。
三套可跨平台的 library 大家可自行选择,只能用在 Windows 的 MFC 就不用考虑了

wxWidgets 内带 wxodbc,可惜 wxd 目前并没有包装它。

总结:wxWidgets性能及ui最好,Qt最大最全,GTK+架构及扩展性最好

来源:http://pantherlover.blog.163.com/blog/static/502287092009266911868/
在PHP网站开发过程中,如果你建立的网站涉及大量的图片处理,必然涉及到图片上传,缩放,而如何保持图片不失真,是很多初级PHP网站开发者比较头疼的一件事,今天David就和大家分享一下如何进行图片缩放。使用之前你需要下载安装GD库,以支持PHP图片处理。下面我们结合代码讲解具体的PHP图片缩放处理的思路。

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
    $pic_width = imagesx($im);
    $pic_height = imagesy($im);

    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
    {
        if($maxwidth && $pic_width>$maxwidth)
        {
            $widthratio = $maxwidth/$pic_width;
            $resizewidth_tag = true;
        }

        if($maxheight && $pic_height>$maxheight)
        {
            $heightratio = $maxheight/$pic_height;
            $resizeheight_tag = true;
        }

        if($resizewidth_tag && $resizeheight_tag)
        {
            if($widthratio<$heightratio)
                $ratio = $widthratio;
            else
                $ratio = $heightratio;
        }

        if($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
        if($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;

        $newwidth = $pic_width * $ratio;
        $newheight = $pic_height * $ratio;

        if(function_exists("imagecopyresampled"))
        {
            $newim = imagecreatetruecolor($newwidth,$newheight);
           imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
        else
        {
            $newim = imagecreate($newwidth,$newheight);
           imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }

        $name = $name.$filetype;
        imagejpeg($newim,$name);
        imagedestroy($newim);
    }
    else
    {
        $name = $name.$filetype;
        imagejpeg($im,$name);
    }          
}


参数说明:

$im 图片对象,应用函数之前,你需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();

$maxwidth 定义生成图片的最大宽度(单位:像素)

$maxheight 生成图片的最大高度(单位:像素)

$name 生成的图片名

$filetype 最终生成的图片类型(.jpg/.png/.gif)

代码注释:

第3~4行:读取需要缩放的图片实际宽高

第8~26行:通过计算实际图片宽高与需要生成图片的宽高的压缩比例最终得出进行图片缩放是根据宽度还是高度进行缩放,当前程序是根据宽度进行图片缩放。如果你想根据高度进行图片缩放,你可以将第22行的语句改成$widthratio>$heightratio

第28~31行:如果实际图片的长度或者宽度小于规定生成图片的长度或者宽度,则要么根据长度进行图片缩放,要么根据宽度进行图片缩放。

第33~34行:计算最终缩放生成的图片长宽。

第36~45行:根据计算出的最终生成图片的长宽改变图片大小,有两种改变图片大小的方法:ImageCopyResized()函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。ImageCopyResamples(),其像素插值算法得到的图像边缘比较平滑,但该函数的速度比ImageCopyResized()慢。

第47~49行:最终生成经过处理后的图片,如果你需要生成GIF或PNG,你需要将imagejpeg()函数改成imagegif()或imagepng()

第51~56行:如果实际图片的长宽小于规定生成的图片长宽,则保持图片原样,同理,如果你需要生成GIF或PNG,你需要将imagejpeg()函数改成imagegif()或imagepng()。

特别说明:

  GD库1.6.2版以前支持GIF格式,但因GIF格式使用LZW演算法牵涉专利权,因此在GD1.6.2版之后不支持GIF的格式。如果你是 WINDOWS的环境,你只要进入PHP.INI文件找到extension=php_gd2.dll,将#去除,重启APACHE即可,如果你是 Linux环境,又想支持GIF,PNG,JPEG,你需要去下载libpng,zlib,以及freetype字体并安装。

  OK,PHP图片压缩函数完成,最后我们概述一下整个处理的思路:

  通过计算实际图片的长宽与规定生成图片的长宽之间的缩放比例,根据实际的需求(按照宽度还是按照高度进行图片缩放)计算出最终生成图片的大小,然后应用PHP图片处理函数对图片进行处理,最后输出图片。

  以上就是关于PHP图片处理中如何对图片进行压缩并保持不失真的函数说明,有疑问或者好的建议欢迎给我留言,下次我将分享在PHP网站开发建设完成后,由于图片目录没有规划好,我们该如何对图片进行迁移的思路。

来源:http://www.leapsoul.cn/?p=118



他人原创:php类-resizeimage类-图片生成缩略图
http://blog.csdn.net/borsam/article/details/2200918
[codes=php]
<?php
class resizeimage
{
   //图片类型
   var $type;
   //实际宽度
   var $width;
   //实际高度
   var $height;
   //改变后的宽度
   var $resize_width;
   //改变后的高度
   var $resize_height;
   //是否裁图
   var $cut;
   //源图象
   var $srcimg;
   //目标图象地址阅读全文
窗口(windows) -> 首选项(preferences) -> 常规(general) -> 外观(apprearcn) -> 颜色和字体(color and font) -> 基本 -> 文本字体(text font)

解决办法:
Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Basic -> Text Font -> Change
选择 BitStream Vera Sans Mono (其他几个BitStream的字体应该也可以)


安装Aptana3中高亮显示相同变量(实践OK)
Window -> preferences -> Aptana Studio -> Editors -> PHP
选中 Mark occurrences with background color 其中选项 Global variables 就是高亮显示相同变量
==================================================================
“这是一个最好的时代,也是一个最坏的时代”。若要用一句话来概括现在我们所处的这个时代,狄更斯在《双城记》中的这句名言怕是最合适不过了。
  为什么这么说呢?其实,时代是无所谓好坏的,只不过人永远只能活在当下,而又总是向往生活在别处,于是便尤其觉得所处的这个时代瑕疵斑斑,就象诗人于坚所形容的,我们是“站在餐桌旁的一代”。然而我始终认为,作为个体、作为平凡人,你改变不了这个时代,你也无须试图去改变这个时代。你所要做的,只是坚守内心、建立自己的精神生活,不被物欲横流的时代症候所盅惑。
  穿过时光的眼,让我们回到卡夫卡所在的那个时代,看看这个文学大师是怎样度过他生命中的某一天的。
  1914年4月2日,卡夫卡的日记里只有两句话:“德国俄国宣战。——下午游泳。”这是非常奇特的,他把一个无关紧要的个人生活细节与重大的世界崩溃的事件联系在一起,有力地体现出了卡夫卡的写作与生存不被集体记忆或社会公论所左右,他坚定的是个人的对世界的立场。
  同样的,张爱玲在她的那个时代,在那个宏大叙事的时代,也绝对是个异数,当大家都在揽时代变迁、社会变革为己任、全身投入革命洪流的时候,张爱玲却在看着手指尖的指甲红而自怨自艾着、她宣扬的是与时代精神格格不入的物质主义、宣扬的是“成名要趁早”,更要命的是,她还和一个著名的汉奸开始了一段感情。还有比这更离经叛道的吗?
  可是,你得承认,时至今日,那些普罗文学、那些高、大、全、打着深深时代烙印的革命文学都被遗忘和淹没在故纸堆了,而张爱玲具有普遍意义的小我叙事,却穿越时空,留存了下来,成为30年代上海孤岛文学的最珍贵资料,成为那个革命时代里最弥足珍贵的个体生活史,而她的文学,也继续影响和打动着我们。
  所以,永远不要去责备时代的丑恶或者不完美,去求证个人的渺小或者时代的强大。是的,这确实是一个快餐时代,人们都在消费着速食爱情,是的,这确实是一个精神荒芜的年代。人们都在逃避崇高、物化精神,可是这又有什么关系?人类永远会有糟糕的儿童期和糨糊一样的青春期,正如我们现在所处的这样一个怀疑一切、破坏一切的时代。没有由衷的信仰,其实又何尝不是一种契机,或许我们将由此进入人类的成人时期。
《醉翁亭记》滁州白话版作者:Yacht
阅读全文
在firefox下使用js清空file控件的value非常简单, 即:obj.value=""; 就可以了,但在ie下,由于出于安全等方面考虑,file的value被设为了只读,所以js对其不能直接地控制,因此我们只能使用一些变通的方法来解决,网上对此也有好些方法,在此我谈谈自己认为最好的几种。
阅读全文
这件事弄得我挺郁闷的.

阅读全文
今天发现一个函数很奇怪,没有在php里面写,感觉是一个扩展,于是通过膘哥哥的这个提示后写出如下:
[~]# php -r "print_r(get_defined_functions());"|grep qp_pt2vkey_verify        
            [1198] => qp_pt2vkey_verify

果然是c写的扩展,牛!!!
来源:膘叔,Jackxiang,版权所有:)

addTime:2021-03-05
php --re gd|grep imagettfbbox  
--re <name>      Show information about extension <name>.

php --re gd|grep images
    Function [ <internal:gd> function imagesetstyle ] {
    Function [ <internal:gd> function imagesetthickness ] {
    Function [ <internal:gd> function imagesavealpha ] {
    Function [ <internal:gd> function imagesettile ] {



Ps:
膘叔(19129540)  17:07:32
get_defined_functions
回忆未来(372647693)  17:10:04
[~]# php -r "var_dump(get_defined_functions());"|grep qp_pt2vkey_verify
    string(17) "qp_pt2vkey_verify"
回忆未来(372647693)  17:10:43
膘哥你是天上太阳,没有你就没有地球,没有海洋。没有鸟笼山。。。
纯月(88659854)  17:11:01
去帮彪哥点广告去
回忆未来(372647693)  17:11:35
今天我从村里赶来,来唱这首歌,。。。
PHP5→(404926006)  17:11:55
膘叔是我们榜样,我们要像膘叔学习。

PHP5→(404926006)  17:12:49
虽然他那么猥*,虽然他那么*龊,但是我们都不在乎。。。
PHP5→(404926006)  17:13:19
只因为一个原因,因为他是我们的膘叔。

目的:官方PHP7.3.12版本的代码的memcached/memcache的扩展有些不是官方的,打包后需要简单测试一下:
centos6.x:
php-7.3.12-200119174731.el6.x86_64
memcached-php73-3.1.5-200120160443.el6.x86_64
memcache-php73-4.0.5-200120133708.el6.x86_64
redis-php73-3.1.2-200120134324.el6.x86_64

centos7.x:
memcached-php73-3.1.5-200120155225.el7.centos.x86_64.rpm
php-7.3.12-191219193316.el7.centos.x86_64.rpm
memcache-php73-4.0.5-200119152756.el7.centos.x86_64.rpm
redis-php73-3.1.2-191218163944.el7.centos.x86_64.rpm


一)memcace扩展代码成功如下:

php bar.php
TK

telnet 10.71.11.4* 11211
Trying 10.71.11.4*...
Connected to 10.71.11.4*.
Escape character is '^]'.
get name
VALUE name 0 2
TK
END
set name 0 0 4  
jack
STORED
get name
VALUE name 0 4
jack
END


php bar.php   #  //$memcache->set('name', 'TK');
jack

更多telnet 的操作:
https://jackxiang.com/post/2484/

二)memcached扩展下的PHP测试代码如下:

php memcached.php
int(1)

telnet 10.71.11.40 11211
Trying 10.71.11.40...
Connected to 10.71.11.40.
Escape character is '^]'.
get 123
VALUE 123 1 1
1
END

==========================================EOF================================

PHP代码保存数组片段如下:

<?php
date_default_timezone_set ('Asia/Shanghai');
//连接
$mem = new Memcache;
$mem->connect("10.70.33.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
// 替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>


如果正常的话,浏览器将输出:
php  memcacheTest.php
Get key1 value: This is first value<br />Get key1 value: This is replace value<br />Get key2 value: Array
(
    [0] => aaa
    [1] => bbb
    [2] => ccc
    [3] => ddd
)
<br />Get key1 value:
<br />

程序代码分析

初始化一个Memcache的对象:

$mem = new Memcache;


连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:

$mem->connect("192.168.0.200", 12000);


保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:

$mem->set(‘key1‘, ‘This is first value’, 0, 60);


从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:

$val = $mem->get(’key1′);
echo "Get key1 value: " . $val;


现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:

$mem->replace(‘key1′, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val;


同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出

$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2′, $arr, 0, 60);
$val2 = $mem->get(‘key2′);
print_r($val2);


现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果

$mem->delete(‘key1′);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val . "<br>";


最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接

$mem->flush();
$val2 = $mem->get(‘key2′);
echo "Get key2 value: ";
print_r($val2);
echo "<br>";


Memcache的使用
使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。
分页: 185/338 第一页 上页 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 下页 最后页 [ 显示模式: 摘要 | 列表 ]