Aside

ngnix and fastcgi and cicstg 开发环境搭建

一个搭建HTTP Server的项目需求,虽然方案没有最终确定,使用Ngnix做代理转发,后端使用使用开发语言无关的CGI应用进行业务逻辑处理,初步技术是可行的。但使用C语言开发WebServer 应用或许真不是什么好主意,那这样想啊,我们还用CICS这么古老的东西呢?–这里又忍不住想吐槽cics了..这个架构中的毒瘤!…. 进入正题吧,首先安装ngnix,ngnix的强大就不用叨叨了,安装也相当顺利。

  • 下载安装PCRE
# wget  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
# ./configure;make;make install;
# wget http://nginx.org/download/nginx-1.10.2.tar.gz
# ./configure;make;make install;

这样就可以启动nginx,默认安装在了/usr/local/nginx目录下.

  • 下载安装spawn-fcgi,可以从Github Lighthtpd项目中下载,也可以直接从lighttpd.net这里下载。同样可以编译出Spawn-fcgi这个可执行程序。ngnix是支持FastCgi的,但是没有这个CGI管理程序。
  • 接下来就可以写CGI程序了,可以使用一些现成开源库,当然也可以自己写。
  • 安装CICS TRANSACTION GATEWAY,!!!NOTE!!![这玩意基本上支持32系统,安装时也会各种水土不服的,你可能需要32位的jre..]安装开发中可能需要32位支持,比如:
libXp.i686 
glibc-devel.i686

–慢慢享受其中的酸爽吧%$%$%.

  • 顺利的话应该可以写代码测试一下了。以下代码片段是接受从浏览器提交的表单然后提交CTG请求,编写代码编译。
 while (FCGI_Accept() >= 0) {   
        memset(sBufIn,0,sizeof(sBufIn));
        FCGI_fread(sBufIn, sizeof(char), sizeof(sBufIn), FCGI_stdin);
        if(strlen(sBufIn)==0)
        {
            memcpy(sBufIn,sParmas,strlen(sParmas));
        }
        memset(&tHttpIn,0x00,sizeof(HttpReqT));
        rc=InitHttpIn(&tHttpIn,sBufIn);
        resultSize= URLDecode(tHttpIn.MsgIn, tHttpIn.MsgIn, sizeof(tHttpIn.MsgIn));
        rc=CallCtgSvr(&tHttpIn);
        if(rc != RC_OK)
        {
            printf("Content-type: text/plain\r\n"
                "\r\n"
                ""
                "QUERY_STRING :%s.\n"
                "REQUEST_METHOD : %s.\n"
                "CONTENT_TYPE : %s.\n"
                "CONTENT_LENGTH : %s.\n"
                "SERVER_PROTOCOL : %s.\n"
              ...
         }
         ...
     }
     // CTG 调用函数
     // CTG_openRemoteGatewayConnection();
     // CTG_ECI_Execute(gatewayToken, &eciParms);
     // Makefile libs -m64 -lctgclient -lfcgi
  • 配置nginx 端口转发处理FASTCGI.
 location ~ \.cgi$ {
        fastcgi_pass 127.0.0.1:8000;
        fastcgi_index index.cgi;
        fastcgi_param SCRIPT_FILENAME fcgi$fastcgi_script_name;
        include fastcgi_params;
    }
  • 配置nginx 端口转发处理FASTCGI.启动CGI程序。
     /usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8000 -f /usr/local/nginx/cgi-bin/ctgcls
  • 使用浏览器测试或其他HTTP 客户端程序测试
 #!/usr/bin/env python
#coding=utf8
import httplib, urllib
httpClient = None
try:
    #params = urllib.urlencode({'name': 'tom', 'age': 22})
    params = '''TEST CTG..'''
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    httpClient = httplib.HTTPConnection("192.168.101.181", 80, timeout=30)
    httpClient.request("POST", "/ctgcls.cgi", params, headers)
    response = httpClient.getresponse()
    print response.status
    print response.reason
    print response.read()
    print response.getheaders() #获取头信息
except Exception, e:
    print e
finally:
    if httpClient:
        httpClient.close() 
No Access-Control-Allow-Origin 问题解决

No Access-Control-Allow-Origin 问题解决

Font from origin 'http://www.ingressplus.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ingressplus.com' is therefore not allowed access.

 

最近将一个网站迁移到新的VPS,数据库,文件备份后部署遇到了许多奇奇怪怪的问题,但大多都是环境配置问题,由于要在主机部署多个网站,这里用到了VirtualHost.

    DocumentRoot /var/www/html/chyrp
    ServerName www.ingressplus.com
    ServerAlias *.ingressplus.com
    ErrorLog logs/error_log
    CustomLog logs/access_log common

protocolo-http
1.解决403问题后,网站主页可以打开,但所有链接(站内)都404,网站配置问题,使用chyrp重新安装,当然数据库表数据不要删除,文件不要删除,只要在/includes/目录下新生成config.yaml.php 配置文件,是数据库和基本的配置。更改.htaccess 文件:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+$ index.php [L]
RewriteCond %{HTTP_HOST} !^www.siteX.com [NC]
RewriteRule ^(.*)$ http://www.siteX.com/$1 [L,R=301]

2.网站中特殊字体(social-font)使用带www域名访问正常加载,但使用不带www的域名访问则不加载,通过Chrome调试,看到报错信息:Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header... 反复查资料更改,通常在使用CDN会出现这种访问权限问题,带www的url和不带www对同一个css同路径文件权限不一样的..在.htaccess 文件添加内容:
<ifmodule mod_headers.c>
<filesmatch “\.(ttf|ttc|otf|eot|woff|font.css|css)$”>
Header set Access-Control-Allow-Origin “*”
</filesmatch>
</ifmodule>
结果无效....将这些内容粘贴到/etc/httpd/conf/httpd.conf 中,重新加载apache.成功解决问题...

Ubuntu 卸载Fcitx输入法后无法登录桌面问题解决

Ubuntu 卸载Fcitx输入法后无法登录桌面问题解决

ubuntu linux 安装搜狗拼音输入法的方法就不说了,需要依赖Fcitx。
如果想卸载fcitx和sogou拼音输入法,那么注意了,你可能回无法进入桌面系统,
具体症状是:在图形登录界面输入密码后enter,又跳回登录界面。使用CTRL+ALT+F1.正常登录,显然密码没有问题。

logo-ubuntu
原因即是:卸载不完全,导致在登录时无法正确加载输入法,准确地说是搜狗拼音输入法的残留。
解决方法:
1.切换到字符终端界面CTRL+ALT+F1..6.
2.删除/etc/X11/Xsession.d目录下的Sogou拼音配置文件。
(这块我把具体名字忘记另外,大家可以搜索grep -nr fcitx 找找)

cd /etc/X11/Xsession.d
sudo rm -f 55Sogou*[具体名字我没记下来]
cd /etc/X11/xinit/xinput.d
sudo rm -f *Sogou*[具体名字我没记下来]
sudo rm -f /usr/bin/fcitx [如果该文件存在]

3.重新登录,看是不是已经OK。

空间不够来折腾:手机系统备份到电脑

空间不够来折腾:手机系统备份到电脑

一台手机MOTO G ,8G,装了N多App,剩余空间1G左右。motorola被联想收购后,说好的lollipop迟迟不见,CM12都出了,花儿也谢了,现在要在Moto G上安装CM 12 的android5.0,背景交代完毕。
需要备份原有官方系统以待OTA,使用CWM recovery,但是剩下空间显然不够了..
解决方案:将备份文件移出手机,待需要还原时再移回手机。

1.刷入使用第三方Recovery Clockworkmod;
2.手机上进入recovery模式,备份系统;
3.挂载/data
4.敲入命令, 进入 shell界面
adb shell

5.进入目录 ,检查CWM的备份文件

/data/media/clockworkmod/backup

该目录下是备份的文件: 如:1970-02-02.16.18.37
cwm_backup

6.将文件下载到电脑,如D盘。
adb pull /data/media/clockworkmod/backup/1970-02-02.16.18.37 D:

7.需要还原时再 adb push...

--------另外刚刚有调整了Linux 下VitrulBox 虚拟机磁盘空间,也顺便写下来,类似命令:
查看硬盘信息:

VBoxManage list hdds

如果是vmdk格式虚拟机磁盘,首先将vmdk 虚拟机磁盘格式转换为vdi,因为vmdk不可以..

VBoxManage clonehd  ././XXXX.vmdk  ././XXXX.vdi  --format vdi

然后,调整改磁盘(记下UUID)大小:

VBoxManage modifyhd  UUID --resize 409600

 

Goodbye to 2014 and say hi to 2015[拜拜2014,你好2015]

Goodbye to 2014 and say hi to 2015[拜拜2014,你好2015]

2014,再见[不会再见吧]!你好,2015!

一年又接近尾声,按照惯例,我会在这里辞旧迎新。稍稍缅怀,稍稍展望。
2014 这一年,发生了许多事,在我身上,我身边,还有其它地方。
回顾过去的一年,这里,那里,其它地方发生过许许多多的事情,或悲或喜,或聚或散。
无论如何,过去的,终会过去。将来的会比好更好,比逼格更逼格..
关于我的,今年发生了很多非常重大的事;我会在这里[https://www.gigiwangs.com] Po 一些上去;这是一个托管在Github的静态网站,更新很慢;尽管这里更新也很慢。我会再来这里更新这个Post。
身边的事,先更新一下日历吧! 看这里为[你的日历导入中国农历Lunar Calendar];我更新了未来几年的中国农历,可以导入你的Google 日历中,方便在移动设备上查看;[话说,最近谷歌的大动作不少,Android5.0,Inbox,新版Gmail,新版日历,惊艳...]
CAL
2014/05/27 Google 全线遭到屏蔽,上网越来越艰难;
2014//,
2014年夏,发生了多起少女失踪事件;
2014年夏,巴西世界杯...;
2014年夏,广电总局放大招,针对盒子?
2014年秋,去了趟深圳,没有过深圳河,对岸...
2014年,坚挺的房地产有些痿...
2014年,所谓的反腐||斗争,这个好像不关我什么事,不提...
........

看吧...我什么都不敢说,原谅我,大伙都懂....
总之,还是祥和的一年,大家都还好。。。
其它的,Google Zeitgeist应该在最近几天发布,到时我再来更新...如果我没来,看这里[http://www.google.com/trends/topcharts?zg=full]

Bugzilla和Mantis安装部署

Bugzilla和Mantis安装部署

Bugzilla 部署步骤有的小麻烦,但Mantis部署很简单,下载包,数据库设置按部就班就可以了。

这里记录一些安装中的问题:

mantis1.Mantis 配置文件config_inc.php,需要修改的内容:
数据库配置:
$g_hostname = 'localhost';
$g_db_type = 'mysql';
$g_database_name = 'jaguardb';
$g_db_username = 'dbusr';
$g_db_password = 'xxxxxxx';

配置时区:
$g_default_timezone = 'Asia/Shanghai';
否则出现:SYSTEM WARNING: 'date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

2.Bugzilla 安装配置

bugzilla

1.安装perl模块
检查依赖的CPAN包模块:sudo perl checksetup.pl,进行安装
sudo perl install-module.pl  --all
报错: install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted. Compilation failed in require at (eval 1231) line 3, <DATA> line 577.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib  /usr/lib/libmysqlclient.18.dylib

2.配置localconfig配置文件
$db_driver = 'mysql';
$db_host = 'localhost';
$db_name = 'bugszilla';
$db_user = 'dbusr';
$db_pass = 'acbxxxxxxx';
3.配置Apache文件/etc/apache2/httpd.conf

<Directory "/Library/WebServer/Documents/bugzilla">
Options ExecCGI FollowSymLinks
AddHandler cgi-script .cgi
DirectoryIndex index.html index.html.var index.cgi
order deny,allow
Allow from all
</Directory>

无线投射:电视盒子中的一些技术参数

无线投射:电视盒子中的一些技术参数

选购一款合适的电视盒子产品,无非考虑其性能,价格,外观,易用性,扩展性等几个方面。鉴于互联网产品生命周期越来越短,综合因素选择真正适合的一款产品目前还不算容易,毕竟可供选择的相对较少,而且似乎无良商家都抓住了“饥饿营销”救命稻草,恶心你到死!

SCREEN_MULTI

这里对盒子产品中的一些技术参数做一下简单介绍,供在选购时参考(别的地方都有的,我就不多提了):

无线投射:Miracast,Airplay,DLNA。

hezi-gray-icon-1 

Miracast是WiFi联盟新推出的Wireless Display的标准。可以使用它来将你的屏幕投影至电视机、投影仪和同样支持 Miracast 的流媒体播放器。 可以使用此技术分享你在电脑上的操作、展示幻灯片放映,甚至在更大的屏幕上玩你喜爱的游戏。例如手机可透过Miracast将影片或照片直接在电视或其他装置播放而无需任何连接线,也不需透过无线存取点(AP, Access Point)。它分源(Source)端和接收(Sink)端。Source负责实时抓取音视频信号,混合,编码成H.264的格式,然后通过WiFi发出去。
Sink通过WiFi接收H.264的数据,解码,然后通过音视频系统播放出来。

源(Source)端:只需要将手机或者平板要开启无线显示功能,请转至 设置 > 设备 > 显示 > 投射屏幕 >  菜单,然后选中“启用无线显示”旁边的框即可。支持的设备有Google Nexus4 Nexus 5,Nexus 7,Nexus 10,Moto X,Moto G,小米M3 等Android设备和Windows Phone设备。

接收(Sink)端:这里指的是电视盒子,小米盒子支持,其它不明确。

AirPlay是苹果公司的在iOS4.2及OS X Mountain Lion中加入的一种播放技术,可以将iPhone、iPod touch、iPad及Mac(需要OS X Mountain Lion)上的视频镜像传送到支持Airplay的设备(如:音箱、Apple TV)中播放。使用Airplay需要iOS4.2版本的设备或Mac电脑上的iTunes10.1以上版本。视频镜像则需要iOS 5及OS X Mountain Lion。

当用户的设备(Mac, PC, iPod touch, iPhone, iPad)与支持AirPlay技术的音箱在同一无线局域网(WIFI)内的时候,用户在Mac或PC上打开iTunes 10或更高版本后,就会在iTunes音量条旁边(iTunes 10在窗口的右下角)看到一个AirPlay按钮。点击该AirPlay按钮,然后选择需要同步到的设备,就可以选择将音乐或视频无线同步到设备进行播放。而iPod touch, iPhone和iPad用户则可以在相应的“音乐”,“视频”以及支持AirPlay功能的第三方软件界面找到AirPlay按钮,操作同Mac和PC。

DLNA:DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE, 其宗旨是Enjoy your music, photos and videos, anywhere anytime, 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能。

屏幕共享DLNA应该做不到,内容共享(视频,音频,图片)倒是可以,直接播放,之前我的一篇文章:WINDOWS下启用DLNA在Android设备中直接播放,链接:https://www.gigiwangs.com/archives/1214

CPU,GPU,ROM,RAM:芯片五花八门,似乎国产的居多,不懂……升级换代较快,一般来说,数字越大越好,客官您看着办吧!
外观:外观就技术参数吗?钢琴烤漆,塑料还是金属,看着好,手感好就好,操作界面也因人而异了!
操作系统:Android的大多数盒子如小米盒子,乐视TV盒子等,iOS的Apple TV,阿里云OS的天猫魔盒(TCL魔盒),当然这个阿里云OS要不要归到Android中呢?
片源(数据源):呸!这个有什么参数,越多越好!
扩展:外接设备,无线投射算一种,OTG设备和普通USB存储设备。OTG(USB On-The-Go),简单讲,你可以直接使用移动设备(手机/平板)+OTG数据线+USB存储。手机直接读取USB存储(U盘,移动硬盘)的内容。支持的设备有GOOLGE  Nexus 设备(NEXUS S 以后设备都支持,三星,Moto等)。

其它,待续……

VMware 中Linux 调整分区大小

VMware 中Linux 调整分区大小

Fedora_logo

Precondition :VMware Player 中安装的Fedora 17 Linux 32bit,个人较久远的测试环境,安装时没有进行磁盘规划,默认20G空间(动态调整),安装在根/下。
Background :在上述环境中安装IBM DB2 Express-C 10.5(v10.5fp1_linuxia32_expc.tar.gz),安装时/tmp空间不足,无法安装。
Plan:需要进行磁盘扩容。考虑到使用VMware Player虚拟机。

1.首先调整虚拟机大小:player_vm_fedora

2.虚拟机开机,使用fdisk 命令新建新区 fdisk  /dev/sda 添加 /dev/sda3

3.接下来就贴代码了:

Fedora release 17 (Beefy Miracle)
Kernel 3.4.0-1.fc17.i686 on an i686 (0)

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 6.5G 6.0G 529M 92% /
devtmpfs 494M 0 494M 0% /dev
tmpfs 502M 0 502M 0% /dev/shm
tmpfs 502M 940K 502M 1% /run
/dev/mapper/vg-lv_root 6.5G 6.0G 529M 92% /
tmpfs 502M 0 502M 0% /sys/fs/cgroup
tmpfs 502M 0 502M 0% /media
/dev/sda1 497M 81M 392M 17% /boot

[root@localhost ~]# # fdisk /dev/sda

[root@localhost ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00002255

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 16777215 7875584 8e Linux LVM
/dev/sda3 16777216 62914559 23068672 83 Linux

Disk /dev/mapper/vg-lv_swap: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/vg-lv_root: 6979 MB, 6979321856 bytes
255 heads, 63 sectors/track, 848 cylinders, total 13631488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@localhost ~]# pvcreate /dev/sda3
Writing physical volume data to disk "/dev/sda3"
Physical volume "/dev/sda3" successfully created

[root@localhost ~]# vgextend /dev/mapper/vg /dev/sda3 
Volume group "vg" successfully extended
[root@localhost ~]# lvextend -L +20G /dev/mapper/vg-lv_root
Extending logical volume lv_root to 26.50 GiB
Logical volume lv_root successfully resized

[root@localhost ~]# resize2fs /dev/mapper/vg-lv_root 
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/mapper/vg-lv_root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg-lv_root is now 6946816 blocks long.

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 27G 6.2G 21G 24% /
devtmpfs 494M 0 494M 0% /dev
tmpfs 502M 0 502M 0% /dev/shm
tmpfs 502M 956K 502M 1% /run
/dev/mapper/vg-lv_root 27G 6.2G 21G 24% /
tmpfs 502M 0 502M 0% /sys/fs/cgroup
tmpfs 502M 0 502M 0% /media
/dev/sda1 497M 81M 392M 17% /boot
[root@localhost ~]#

至此,操作结束,空间调整为30GB,满足使用需求。当然,此方案针对虚拟机中已安装的没有采用LVM的linux分区大小调整,其它不必参考此方案。

网页弹出广告,难道又被黑了--问题排查

网页弹出广告,难道又被黑了--问题排查

最讨厌网页上的弹出广告神马的,可今天打开我的网站居然右下角弹出一个大大的弹窗广告!

tanchuang
尼玛!DNS被劫持了?这是公司网络,DNS服务器我使用的是GoogleDNS,打开其它网页,正常!换firefox,IE正常,
唯独我的网站www.gigiwangs.com有弹窗,该不是又被黑了吧!为什么“又”呢?
着手排查吧:
1.检查一下首页代码,发现多了一个弹出flash广告代码。

code_1
2.登录网站后台,没有异常登录信息,关键文件最近没有被更改。
3.考虑这个代码,远端的js代码。检查index.php,head.php,footer.php都正常。
4.初步排除被黑。
5.肯定是那个插件搞鬼了,会是哪一个呢?最近没有更新或安装新的插件。
6.分析一下代码详情,发现***tianqi.php**;

code_cc
7.一下子联想到网页添加了天气预报,来自中国天气网的天气widget代码;以文本方式添加在网页的右边栏,用来显示实时天气预报,
登录中国天气,果然发现使用插件是被添加广告的^

8.至此,问题算是找到了,使用前没有仔细阅读协议,果断换用其它的服务……

支付宝钱包(Android版)-又一个非专业的专业NFC工具APP

支付宝钱包(Android版)-又一个非专业的专业NFC工具APP

之前文章推荐过两款比较不错的NFC软件(ANDROID平台),能够支持读取交通卡,银行卡(银联quickpass卡)等一些符合PBOC IC 标准的卡片的余额及交易信息。可以在这里找到官方网站以及Goolge Play的下载地址。

[每日推荐Recommend Daily]两款NFC好软件云飞NFC和NFCard

今天看到支付宝钱包有了更新版本,已对NFC添加了支持功能。PS:由于只在Google Play下载和更新APP,可能和alipay官网数据有偏差。因此不能保证其信息的时效和有效性。
支付宝钱包的Google Play 地址:https://play.google.com/store/apps/details?id=com.eg.android.AlipayGphone
其中
也描述“根据googleplay市场要求,内不包含彩票功能”及其它的一些更新。但没有提到支持NFC,但经测试,确实已经支持银联IC卡Quickpass闪付卡,已经公交卡的余额,交易信息的NFC读取。
如果你有支持NFC的手机/Pad,可以试试。
通过 测试的有招商银行IC借记卡,以及上海交通卡(紫色),其它没有测试。
nfc_alipay_wallet