电商是如何虐商超的?

以买一根hdmi的的数据线为例,我去市场上采集到的数据:

1. 通州八里桥市场乐天玛特超市,二层东北角,电子器材附件区,只有一种,hdmi的数据线,68元/2M;

2. 乐天玛超市二层西头,一家知名品牌电器城,在卖电视的地方,hdmi数据线,有多种,最便宜的99元/1.5M

3. jd.com, suming.com电商,品种多样,低至 29元/2M.

 

 

发表在 社会生活 | 留下评论

汽車老司機好奇婴幼儿中国国民党革委会中国国民党

编程代码风格之茴字有四种写法

(养成中午写blog的习惯)

一直以来注意代码风格。

最早的时候使用Visual Basic时,没有花括号{},也不需要;,靠换行和缩进来控制逻辑,遇到复杂的事情时候很着急,及至后来开始深入到C, Java, Perl等语言时,才觉得还是有; 和{}更看着舒服些。

于是在ChinaM和UFQI时,在编码上都遵循这样的写法:

if( a == b)

{

c = d;

}

else

{

c = e;

}

或者, 即便在if后面只有一个选择时,也用{}把它兜住。

if(a == b){ c=e;}

后来,有阵子在SINA,读了一些PHP代码,发现它的风格大多是这样:

if(a == b){

c = d;

}else{

c = e;

}

非常紧凑,也清晰,但读起来觉得有些不舒服。

最近在梳理GWA2的代码时,发现如果将两者融合一下或者更好,折中的做法是

if(a == b){

c = d;

}

else{

e = f;

}

这样,看起来不至于太拥挤,也不至于太稀疏,貌似达到中庸之道了。

—-

于是也明白自己为何迟迟不用Python来写一些东西了。靠缩进和换行来控制逻辑的Visual Basic实在有阴影。

 

发表在 计算机技术 | 留下评论

愛自己悅己容汽車老司機車載汽車老司機好奇婴幼儿

apache, resin, ssl对虚拟主机的支持

 

apache本身对虚拟主机支持较好。

resin对虚拟主机支持也较好。

ssl本身也支持基于虚拟主机的配置。

但如果将三者结合起来,困难或者问题要比想象中的多。

比如要实现 https://bizsft.com/a.jsp 寄宿在其他主机服务上,要做的改动分别是:

1. 在 apache的 vhost地方配置, conf/extra/httpd-vhosts.conf 里

<VirtualHost *:80>
ServerAdmin wadelau@ufqi.com
DocumentRoot “/www/bizsft”
ServerName bizsft.com
ServerAlias www.bizsft.com

</VirtualHost>

这样完成在Apache层面的vhost支持。

apache服务器需重启才能够生效,在restart之前最好使用

./apachectl configtest

来验证配置的正确性。

2. 在 resin的vhost里做相应的配置,以便于在bizsft.com下的jsp文件能够转交给resin做相应的处理,在resin的 conf/resin.xml 里,resin <cluster>标签下,配置

<host id=”bizsft.com” root-directory=”.”>
<web-app id=”/” root-directory=”/www/bizsft”/>

</host>

这样就完成了,bizsft.com/a.html 由apache解析,bizsft.com/a.jsp 又resin来负责解析。

resin.xml 被修改保存后,它的watchdog会侦测到文件尺寸的变动,进而触发resin本身重启以使得其生效。

3. 继续来配置基于bizsft.com的安全链接ssl,在 apache相应的ssl模块里,conf/extra/httpd-ssl.conf 里,在原来的基础上增配

NameVirtualHost *:443    # 这句如果已经有了不需再写

<VirtualHost _default_:443>

DocumentRoot “/www/bizsft”
ServerName bizsft.com:443
ServerAdmin wadelau@ufqi.com

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLCertificateFile “/www/conf/server-bizsft.crt”
SSLCertificateKeyFile “/www/conf/server-bizsft.key”

</VirtualHost>

同样需要重启apache才能够使得改动生效。这样就完成了对

https://bizsft.com/a.jsp

访问的支持,如果配上正确的ssl 证书,则在地址栏内会有绿色锁标记。

也可以自行生成一个ssl证书用于测试,主要步骤如下:

创建私钥,shell> openssl genrsa -out server.key 1024

生成公钥,shell> openssl req -new -key server.key -out server.csr

生成证书,shell> openssl x509 -days 3650 -req -in server.csr -signkey server.key -out server.crt

然后按上述配置到 conf/extra/httpd-ssl.conf 文件中去,详细参考:

http://www.bootf.com/563.html

http://blog.51yip.com/apachenginx/958.html

 

4. 综上,在虚拟主机中支持 .jsp 不常见,也即通常说的java虚拟主机不多,在虚拟主机中配置对ssl的支持的做法更是少有,但通过上述配置,可以完成这些任务。

所需要的是在三个地方都需要做相应的配置。

 

发表在 服务器运维, 计算机技术 | 一条评论

中国国民党革委会中国国民党Apache Softwares亮月亮科技

Resin下的虚拟主机的servlet-mapping配置

问题被描述为,在Apache httpd与resin集成的环境中,在rensin下的虚拟主机里,各种配置完好,可以访问.jsp文件,但却无法访问servlet文件,如userAction 或者 userAction.do 这样标记的路径。

通常情况下,在单主机的情况下,servlet-mapping既有全局性的在 resin 全局conf文件里,如 app-default.xml 或者 cluster-default.xml里,也有基于应用的在webapp/WEB-INF/web.xml里的。

在多虚拟主机的情况下,往往在 webapp/web.xml里的设置不起作用,如果是这样,就需要在resin的全局conf文件里做这样的配置。

其原因,导致能够解析.jsp文件,无法访问 servlet文件,是因为与Apache等前置服务器集成,直接访问 /aaBB 或者 /aaBB.do 等文件,直接被Apapche接收处理而没有转交到Resin,这样Resin也就无法获悉。

这就需要类似:

<servlet-mapping url-pattern=”*.do”
servlet-name=”resin-jsp”
default=”true”/>

这样的配置在resin的全局conf里,或者在项目的 webapp/WEB-INF/web.xml:

<servlet-mapping>
<servlet-name>resin-jsp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

的设置。

 

发表在 服务器运维, 计算机技术 | 一条评论

愛自己悅己容2nd愛自己悅己容汽車老司機車載汽車老司機

apache2.2 + resin4 的PHP解析問題, resin disable quercus

apache2.2 + resin4 的PHP解析問題,, resin disable quercus
雖然resin4包含了Quercus,能夠解析PHP5腳本,但是因為這玩意不是中國人開發的,沒有充分考慮到多字節字符的問題,全部用的latin1編碼,而且還硬編碼在源代碼中了,很是扯淡!
最近有一個PHP的項目需要發佈,於是照常發佈到了apache中,並在resin的conf/app-default.xml配置文件中將PHP相關配置給註釋掉了,以為這樣就可以將PHP的解析交給apache處理了,就像之前的resin3一樣。結果卻證明完全想錯了,經過一番折騰,解決辦法如下:
resin的conf/app-default.xml還得照改不誤,但是還得修改conf/resin.xml文件 (wadelau注: resin-4.0.35之后,需要在 conf/cluster-default.xml里找下面的高亮语句),在這個文件中找到以下位置:
<cluster-default>
<!– shared webapp jars for non-classloader-aware libraries –>
<web-app-default>
<class-loader>
<library-loader path=”${resin.home}/webapp-jars”/>
</class-loader>
</web-app-default>
    <!– standard servlet behavior, including .jsp, .php, and WEB-INF –>
   <resin:import path=”classpath:META-INF/caucho/app-default.xml”/>
 
請注意上面紅色加粗的這行,這行的意思是從classpath路徑中搜尋META-INF/caucho/app-default.xml文件,熟悉java開發的朋友應該知道classpath的搜索路徑不僅僅包括文件夾,還可以是jar包,而META-INF/caucho/app-default.xml恰恰就在resin的lib/resin.jar包中,這個包中果然也有一個app-default.xml文件,內容與conf/app-default.xml一模一樣,如果想讓resin徹底的不解析PHP,那麼將這個文件中的PHP配置也註釋掉就可以了。但在這裡我不這麼做,因為要解包,改好了還要再重新打包,很討人嫌!咱不是將conf/app-default.xml改好了嗎?那就把這行給給換掉不就行了嗎?改成下面這行即可:
        <resin:import path=”${__DIR__}/app-default.xml”/>
(注意:這行改了之後,resin-admin就不能用了,提示404文件未找到。找到resin-admin的WEB-INF目錄,查看resin-web.xml文件,發現這個文件中加載了Quercus,那麼按道理resin-admin應該還是由resin解析的,不應該不能用,折騰了好久,猛然想到是不是歡迎頁中沒有index.php呢?仔細一查看,果然如此。冤枉死了好多腦細胞。)
這個${__DIR__}在resin配置文件中是代表resin的conf目錄路徑的,這句的意思也就是導入conf目錄下的app-default.xml文件。好了,現在刷新一下瀏覽器,PHP應用果然交給apache處理了,不過問題又來了,雖然PHP的處理權是交給apache了,但頁面卻顯示源碼,為了解決這個問題,我用PHP寫了個shell腳本-test.php,內容如下:
#!/usr/bin/php -q
<?
echo “a test!~~”;
?>
保存退出,並修改為可執行權限:
chmod +x test.php
運行它:./test.php
結果發現控制台上也打印出源代碼,如下所示:
[root@www shine]# ./test.php
<?
echo “a test!~~”;
?>
於是可以肯定此問題不是因為apache不能識別php腳本,而是php本身的問題,根據以往的經驗,突然想到PHP腳本的開始/結束符可以用<? ?>,也可以用<?php ?>,前者是短風格,後者是長風格,具體可以使用哪種風格,需要修改php.ini文件中的相應配置項,於是編輯/etc/php.ini,找到 short_open_tag = Off  這一行,將Off改成On即可,保存退出,重啟apache,再刷新瀏覽器,php解析恢復正常,問題解決。
发表在 服务器运维, 计算机技术 | 一条评论

汽車老司機好奇婴幼儿中国国民党革委会中国国民党

在搜狗浏览器中修改默认搜索引擎为UFQI-NatureDNS

搜狗浏览器算是比较良心的,提供了允许用户增加自定义搜索引擎的功能。

下面就截图介绍一下用户如何在搜狗浏览器中增加对NatureDNS的支持,如果是搜狗浏览器的开发人员看到,请参考开发人员版的“在浏览器中启用自然域名(NatureDNS)的方法[1]”。

修改设置的路径是:

工具 à 搜狗浏览器选项 à 搜索栏  à 添加

image001

 

 

然后点击“添加”自定义的搜索引擎,然后选择“自定义项”,

image002

 

在 显示名称 里 填入 NatureDNS 或者 NatDNS

在 搜索串 中填入 http://ufqi.com/naturedns/search?q=%s&c=gbk

image003

点击保存后,回到前一个对话框,在 地址栏搜索 中选择下拉框中的 NatureDNS  或者 NatDNS,如下图

image004

然后点 应用 , 确定, 保存退出。

然后就成了! 在地址栏内输入  -ufqi  试试吧!

 

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

愛自己悅己容2nd愛自己悅己容汽車老司機車載汽車老司機