-NatureDNS 自然域名浏览器支持设置程序简化

今天,在 “今生已迟(勇燕)” 同学的帮助下,关于-NatureDNS 自然域名在一些浏览器中启用支持的设置程序又进一步得到简化,实现了多数情况下不需下载、执行安装程序即可完成相应的设置,实现用户的浏览器(MSIE、Chrome、Firefox等)对-NatureDNS 自然域名的支持!

在主要浏览器的自动设置模块,均增加了“按此设置微软MSIE浏览器”这样的链接,用户只要打开 http://ufqi.com/naturedns 页面,点击上面的链接,即可完成相关设置工作。过程变得非常简便。

autoset-dse-list-201404

同时也页面的顶部右侧,也增加了“设置当前浏览器”的链接。

autoset-dse-all-201404

 

在点此链接后,会弹出设置默认搜索引擎的对话框,此时,要勾选“设置当前搜索引擎为默认(make this my default search provider)”的设置(如下图所示),如果不勾选,则添加了之后,还要在“控件设置(manage addons)”里设置 -ufqi-naturedns 为默认。

autoset-dse-msie-201404

在Firefox里也有类似选项,需要在添加的同时,选择为“默认搜索引擎/立即开始使用这个搜索引擎”.

autoset-dse-firefox-201404

另外,MSIE8有时候会报“找不到元素”错误,是Windows的Bug,需要下载执行这个脚本修正.

如果这种在线设置方法不成功,可以在”自动设置“区域再下载相应浏览器的设置程序进行相应的设置。

发表在 计算机技术 | 3条评论

李宁体育用品汽車老司機愛自己悅己容2nd插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板

自然域名(-NatureDNS)的一种企业应用场景

之前在宣讲自然域名的用途时,讲的最多的是就是方面网络用户可以轻易的使用易懂易记的标记访问目标站点,如同我们讲过的例子,“-工商银行” 或者 “-中国工商银行” 来访问“www.icbc.com.cn”一样。

今天在和同事做任务时,遇到一个新的应用场景,比如人民网的主站域名是 people.cn , 早前是 people.com.cn , 用户如果要访问非首页之外的地方,需要在后面一个域名在扩展子域名,比如人民网研究院的域名是 yjy.people.com.cn (自然域名: -人民网研究院 )。但人民网内部用的各个办公系统比如OA系统,人事系统,财务系统,统计后台,CMS系统等各个子系统,需要分别的访问域名,其可能在 people.cn 或者 people.com.cn 下面扩展,也可能启用其他的顶级域名,如 peopedaily.cn 或者 peopledaily.com.cn ….

所以,抛开外部用户访问人民网不说,人民网的员工如果要访问自己的OA系统,该用哪个呢?

oa.people.cn

oa.people.com.cn

oa.peopledaily.cn

oa.peopledaily.com.cn

如果再加个intra, 可能再变出四个:

oa.intra.people.cn

oa.intra.people.com.cn

oa.intra.peopledaily.cn

oa.intra.peopledaily.com.cn

可能注意到,上面我只列取了,.cn下的各个域名,实际上一般公司,不但注册.cn域名,还注册,.com与,.net域名,.us 或者 .hk 或者.uk, .in等等。 人民网自己的员工并不知道如果要访问oa系统,该用哪个地址,靠谱的就是访问一次,然后存到一个列表里,或者存入浏览器的收藏夹里。

遇到跨设备呢? 就卡了,因为这样的信息在搜索引擎里是搜不到的。甚至有些内部系统的访问地址,没有多级域名分配,只有IP地址,情况就变得更糟糕了,人脑记忆IP实在有些困难。

如果使用自然域名会怎样呢? 非常简单!

-people-oa

实际上,-people 之下,访问别的子系统也变得简单了,如

CMS系统: -people-cms

人事系统: -people-hr

简洁、明了、易懂、易记。(不过上面的地址,不要尝试在外网访问,都是私有地址,但这个可以访问 -people-lab 。)

这些搜索引擎也帮不上忙的时候,使用自然域名问题便迎刃而解!

不独是人民网,比如新浪网,可能也面临这样的问题,如果是新浪的OA会是啥样的?

oa.sina.com

oa.sina.cn

oa.sina.com.cn

oa.intra.sina.com

oa.intra.sina.com.cn

oa.erp.sina.com.cn

oa.erp.sina.cn

都可能是,员工无所适从,搜索引擎也无法帮忙,要么记在笔记本的一个列表中,要么记入收藏夹中….

如果启用自然域名会怎样?

-sina-oa 

就是这样! 赶快注册 -自然域名 吧.

发表在 -NatureDNS/-自然域名, 计算机技术 | 留下评论

汽車老司機愛自己悅己容2nd插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板書中自有顔如玉

gMIS主要更新201404

gMIS 通用管理信息系统,最近进行了几个主要更新:删除记录后丢失pntc的导航页异常;初始化查询时的重复SQL查询问题;下拉框从表中选择options时的缓存优化等。

1. 删除记录后的list页面丢失pntc,进而导航页异常

使用gMIS部署到一个新项目,频繁需要删除数据,主要异常行为是,在list页面时,如果删除掉一条记录,则当前页面的导航翻页等功能显示正常,但在进一步点击翻页时,翻页信息全部丢失。

经查,涉及到 class/pagenavi.class.php中的

if(strpos($query, “act=list-“) !== false){
$query = preg_replace(“/act=list\-([0-9a-z]*)/”,”act=list”,$_SERVER[‘QUERY_STRING’]);
$this->hmf[‘neednewpntc’] = 1 ; # newly-added
$query = preg_replace(“/&pntc=([0-9]*)/”,””, $query);
}

然后在 jdo.php里,需要进一步的做处理:

if($_REQUEST[‘pntc’] == ” || $_REQUEST[‘pntc’] == ‘0’ || $navi->get(‘neednewpntc’) == 1){
$pagenum = $gtbl->get(‘pagenum’);
$gtbl->set(‘pagenum’, 1);
$hm = $gtbl->getBy(“count(*) as totalcount”, $navi->getCondition($gtbl, $user));

if($hm[0]){
$hm = $hm[1][0];
$navi->set(‘totalcount’,$hm[‘totalcount’]);
}
$gtbl->set(‘pagenum’, $pagenum);

}

其中, $navi->get(‘neednewpntc’) 的判断条件是新增的,原因是在前面的 class/pagenavi.class.php中去掉了相应的参数,这里要重新算出。 由于$navi对象此时持有的环境变量 $pagenum 和 $pagesize 是导航页的主对象 $obj 的,而select count(*) as totalcount 的结果集,只会有一条记录,因此改之前会出现下面这样的查询SQL:

mysql> select count(*) as totalcount from tbl where …… limit 100,20

这样基本有结果集,但limit的太靠后导致读取不到结果,进而丢失了pntc,导航页面也就失常了。

已修正。

2. 初始化查询时重复SQL问题

gMIS里,在inc/webapp.class.php中,如果活跃对象 $obj 进行属性读取时,$obj->get(‘xxxx’);时,系统会先读取运行时环境值,如果没有就触发去持久层读取相应数据,首选的是读取数据库。

function get($field)
{
if(array_key_exists($field,$this->hmf))
{
return $this->hmf[$field];
}
else if($field != ‘id’ && $field != ‘er’) #! Otherwise, this will cause a dead loop with ._setAll.
{
if($this->get(‘er’) != 1){
if($this->_setAll()){
if(isset($this->hmf[$field])){
return $this->hmf[$field];
}
else{
return $this->hmf[$field]=”;
}
}
else{
return ”;
}
}
else{
return ”;
}
}
else{
return ”;
}
}

其中 $this->get(‘er’) 的判断是新增的,如果第一次读取已经知道是空记录,或者无记录,则在当前会话中,不再继续多次查询同一SQL.

类似的,还新增了 isset($this->hmf[$field]) 的判断,这是针对某个运行时变量只在app中,而没有在持久层中,这样的也会导致因为一个变量的不确定值,而产生的多次同一SQL的查询,加入此判断,则可以减省掉这些不必要的开支。

3. 下拉框选择项的动态读取,重复SQL查询的问题

gMIS中提供了动态下拉框的功能,也即一个下拉框的数据选择项,可以动态的从另外一个数据源(表)中读取。这为管理信息系统提供了丰富的功能。

之前的设计中,在gMIS的 class/gtbl.class.php 中,每次都来一个getSelectOption就读取一次数据库,改进后的做法,增加了缓存:

$hmoption = array();
if(isset($this->hmconf[‘selectoption_’.$field])){
$hmoption = $this->hmconf[‘selectoption_’.$field];
}
else{
$oldhmf = $this->hmf;
$this->hmf = array();
$this->setTbl($tbl);
$hm = $this->getBy(“id,$dispfield”, $arr[3]);
if($hm[0]){
$hmoption = $hm[1]; $this->hmconf[‘selectoption_’.$field] = $hmoption;
}
$this->hmf = $oldhmf;
}
foreach($hmoption as $k=>$rec){
$optionlist .= “<option value=\””.$rec[‘id’].”\””;
if($defaultval != null){
if($rec[‘id’] == $defaultval || strpos(“,”.$defaultval.”,”, “,”.$rec[‘id’].”,”) !== false){
$optionlist .= ” selected”;
$selectval = $rec[$arr[2]].(isset($arr[3])?”-“.$rec[$arr[3]]:””).” (“.$rec[‘id’].”)”;
if($needv == 1){
$selectval_mul .= $rec[$arr[2]].(isset($arr[3])?”-“.$rec[$arr[3]]:””).” (“.$rec[‘id’].”),”;
}
}
}
$optionlist .=”>”.$rec[$arr[2]].(isset($arr[3])?”-“.$rec[$arr[3]]:””).” (“.$rec[‘id’].”)</option>\n”;
}

$hmoption缓存到$this->hmconf中是新增的功能,这样在同一个list页面中,每个select字段,只要一次SQL查询数据源即可。

—- —-

写这么多,发现之前的要优化的地方不少,改进无止境。

最新新注册的 -自然域名 -NatureDNS :

-人民网研究院   -度假村联盟   -乐视网   -蘑菇街   -爱卡汽车   -百度百科   -uc浏览器   -wiki   -豆瓣   -1号店

 

发表在 -gMIS, 编程技术, 计算机技术 | 一条评论

三元牛奶李宁体育用品汽車老司機愛自己悅己容2nd

计算机技术点滴, rotatelogs, awk

1. Apache HTTPD 2.4+ 的 rotatelogs 新功能 很贴心

原来的 rotatelogs 就被挪到别处用做日志的归集与管理。现在遇到新的需求。比如将某个日志文件视为一个有始无终的缓冲池,一边顺序写入,一边顺序读出,而且希望还能按天分文件,不然尺寸会大到不好操作。

按天归集,rotatelogs提供了完备的支持,前面的顺序写入不是问题,而后面的顺序读出就有难度了。在?nix上,通常会用到 tail 这个利器,但tail本身无法对更换文件名的现象做处理。

也许是Apapche HTTPD也遇到这样的问题,在2.4+的版本中,rotatelogs中增加了 -L 参数:

-L linknameCauses a hard link to be made from the current logfile to the specified link name. This can be used to watch the log continuously across rotations using a command like tail -F linkname.

甚好。真发困呢,递个枕头。

在一边读出的一段,这样:

shell> tail –follow=name –max-unchanged-stats=5 –retry –sleep-interval=3 my_file

2. 数据挪移需细节

-ufqi 在改版并挪到 VPS 之前,增加做了全量备份,但数据库的备份是MySQL的目前全拷贝,留的是MySQL格式的.MYI, .MYD等文件。加上新版的数据库统一将数据表及程序运行时环境都改成 UTF-8,原来的数据就面临转库、转码的问题。

综合使用Shell、AWK和Iconv等工具,将数据从一个临时的旧库中转出来成txt,然后再将txt转码,转码之后将txt拼写成新的SQL,然后再倒入到新数据库中,并不是难事。

但奇怪的现象发现了,我之前一直有印象的一篇文章,”最长的一夜“,记录留学事件的文章死活查不到。经过进一步地查看,发现数据在新旧数据库中不一致,再到转码及新SQL生成的程序中核查,发现SQL里的数据量也对,SQL语句被执行,但新生成的记录条数与原来不符,有短缺。

进一步地细心观察发现,存储单引号和双引号的转义问题。

有两个细节在第一次做时忽略了,需纠正:

1)awk在切分由MySQL导出的数据txt时,需增加 -F “\t”, 使用制表符做字段分割;

2)如果在新组装的SQL中,使用”作为字段的边界,则需要使用 gsub(“\””, “\\\””, $4); 这样的形式,对某些字段中的”做转义操作。

—-

海量计算机资源下载地址: -R/L2SW  (5GB) 甚至包含了《计算机程序设计艺术》的1-4卷!

 

发表在 服务器运维, 编程技术 | 2条评论

三元牛奶李宁体育用品汽車老司機愛自己悅己容2nd

新注册 -自然域名 -NatureDNS

最近新注册 -自然域名 -naturedns :

-wiki   -豆瓣   -1号店

-亚马逊   -xwg

-rtxx   -日坛小学

-太平洋汽车   -易车网   -东方财富

发表在 -NatureDNS/-自然域名, 计算机技术 | 留下评论

山羊绒围巾女冬英伦百搭围脖双面格子加厚保暖披肩迪士尼母婴显白黑茶色蓝黑色板栗色三元牛奶

日本小学生处理意外事件

小亚上小学一年级的时候,有一次恰逢学校的对外开放周。在这一周内,包括家长在内的任何人任何时间,任何课都可以自由参观。开放周的前几天,想去的人差不多都去完了,我拖到最后一天才抽出时间去参观,当时已经几乎没有什么来参观的人了。我最想看的是小亚他们平时难得一见的吃午饭,和饭后大家一起打扫卫生,之后自由休息和玩耍的情形。于是11点左右到学校,站在教室后听了一堂算数课还是语文课。12点5分,下课铃响了,我和孩子们一样迫不及待的等着午饭的到来。当然他们是吃,我只是乐于参观。

  一个班大约30个人,每天当值的学生大约七八个,大家轮流做,每人一周。当值生换上配膳用的浅粉色卫生衣,戴上口罩,在走廊里洗干净了手就排着队去食堂取饭。其他学生摆桌子,洗手,戴口罩,等着开饭。一年级新生刚入学的时候,六年级的大孩子会被分配到每个班,帮助小孩子们去运饭。甚至还留下来和他们一起吃午饭,给小孩们作榜样。约两个月之后,一年级新生们就只好自力更生了。我去的时候孩子们刚入小学几个月,刚刚熟悉整个过程。

   我在走廊里站了一会儿,去食堂取饭的孩子们陆陆续续的回来了。取饭的队伍很壮观,两个孩子抬着大饭桶,两个孩子抬着大汤桶,一个孩子端着盛放着全班人的盒装牛奶的大托盘,两个孩子抬着叮当作响的餐具,另一个孩子端了一大盘当天作为主菜的鱼。30个孩子的饭菜以及牛奶、食器都由这几个孩子去搬,不用说十分费力。饭桶和汤桶看起来真是很沉,孩子们费力的移动着脚步,匆匆地从我身边经过。教室里还有二十多个肚子饿得咕咕叫的孩子们等着呢。

   一个男孩,两只手托了一大盘炸过后又浇了各色蔬菜和糖醋汁的鱼向我走过来,香喷喷的味道直窜人的鼻孔。我正琢磨着这鱼是什么味道,突然间意想不到的事情发生了。男孩脚下好像被什么绊住了,踉跄了一下,摔倒在我眼前。手里端的大盘子当的一声撞击到地上,炸鱼撒了一地。

   我一下子愣住了。男孩从地上爬起来,不知所措的站在一边。我手里正好握着相机,不假思索的按了快门。女老师听到声响,从教室里飞快地跑了出来。一眼就明白了发生了什么事情,老师迅速的蹲下来,把地上的鱼一条条都拾回托盘里。我赶紧拿来了挂在走廊里的抹布,和她一起把地面擦干净。

   男孩一直站在原地,低着头,一声不吭。其他搬运食物和餐具的孩子们都忙忙碌碌的,他们绕着蹲在地上收拾残局的我和老师走,没有一个孩子表现出很惊讶的样子,也没有一个孩子停下脚步看一眼局促在那里的男孩。

   作为主菜的鱼不能吃了,我不禁担心孩子们的午饭怎么吃。就见老师叫住一个刚刚运饭回来的孩子说,去告诉放送室,一年一班的鱼没有了。那个孩子小跑着离开了。之后老师再对那个闯了大祸的男孩说,没事了,你回教室去吧。

   教室里,刚才搬运食物的孩子们仍然不得闲,他们还要负责给全班同学盛饭,盛汤,发牛奶。所有的孩子都带着口罩,拿着自己的托盘挨个到值日生前拿盛好的饭菜。值日生们忙着把饭菜和汤盛好,分给每一个人。所有的孩子都分工明确,秩序井然。

   这时,教室里的广播响了:各班同学请注意,请把多余的鱼送到一年一班。

   我很好奇接下来会发生什么事情。楼道里很快响起了陆陆续续的脚步声,一个端着刚才的炸鱼的孩子出现了。他把炸鱼默默地给了当值的同学,又踏着匆匆的脚步离开了。接着后面又陆陆续续的来了很多孩子,同样把盘子里的一条或是两条鱼递给值日生,匆匆离开。大盘子里很快就整整齐齐的码起了几十条鱼,简直就像是奇迹。

   原来,牛奶啊鱼之类的主菜都是按照人头分配到每个班里的,一个班里如果有缺勤的孩子,这类按人头分的食物就会剩下。饭和汤一般量都很充裕,想添饭的孩子可以自由添,但想要剩下的这份菜或者牛奶之类的孩子就通过猜拳的方式决定胜负,幸运的孩子就可以多享用一份。广播告诉各班把多余的鱼送到小亚的班里,全校一共二十几个班,每班平均一两个孩子缺勤,那么正好就凑出小亚班里所需的份数。

   在整个事件发生过程中,没有一个孩子表现出十分惊讶的样子,老师也没有愤怒甚至都没有批评那个犯错的孩子。托盘掉到地上的声音大家可能都听到了,也许有孩子从教室里伸出头来看发生了什么事情。但是没有一丝的喧哗和秩序混乱,大家都安安静静地坐在自己的座位上等待。看到自己没有鱼吃,没有一个孩子出声抱怨,所有的孩子都不可思议的冷静。他们还只是一年级的孩子,却表现得像训练有素的战士一样从容!

    晚上等孩子回家,我问她,知道今天午餐时发生什么事情了吗?你们老师有没有批评那个男孩?女儿平静地说,当然知道。老师一个字也没有提那件事,也没有批评他。

   老师面对犯了大错的孩子,抑制住心中的怒火,给了他最大的宽容与原谅,并且立刻寻找最有效的解决方式。这或许就是孩子们能够从中受益最大的最好的身教方式。

 

发表在 社会生活 | 一条评论

李宁体育用品汽車老司機愛自己悅己容2nd插座保护套儿童防触电插孔安全塞防护盖宝宝婴幼儿插头插座孔插板