Feb 22 2009
大学路上的巴西烤肉
大学路上新开了一家巴西烤肉,每人36元,自助餐。里面自助餐的品种并不多。也就5-6种中餐,2-3种面包,一些水果萨拉,3-4种果汁,速溶咖啡,然后就是烤肉了,大概有10来种烤的东西,每次只有一小点,连烤香蕉都上了,非常小的一段,还有街上到处都是的台湾烤肠,街上一块钱一根的,这里两个人才分一根。印象最深刻的是烤牛舌头,第一次吃这个东西感觉特别不爽,那舌头好像是生的一样,特别软,就好像你在和牛接吻一样,感觉非常别扭,很不习惯。
Feb 22 2009
大学路上新开了一家巴西烤肉,每人36元,自助餐。里面自助餐的品种并不多。也就5-6种中餐,2-3种面包,一些水果萨拉,3-4种果汁,速溶咖啡,然后就是烤肉了,大概有10来种烤的东西,每次只有一小点,连烤香蕉都上了,非常小的一段,还有街上到处都是的台湾烤肠,街上一块钱一根的,这里两个人才分一根。印象最深刻的是烤牛舌头,第一次吃这个东西感觉特别不爽,那舌头好像是生的一样,特别软,就好像你在和牛接吻一样,感觉非常别扭,很不习惯。
Feb 19 2009
在基于sIP的网络内,彩铃提供可包含以下几类方式:
(1)方式一:通过sIP消息中的特殊头域, 明确资源地址, 主叫侧UA设备根据指定头域的http地址信
息, 获取相应资源, 然后呈现给用户。可称为GET方式。
(2)方式二:通过SIP消息体中的SDP协商(由主叫侧UA设备与媒体资源服务器或MGCF设备进行协商),在能力协商成功的情况下, 由媒体设备直接将媒体流PUSH 到主叫设备处。可称为PUSH方式。
(3)方式三:混合方式。同一呼叫中, 某些信息(非实时流的媒体信息,例如图片、卡片等)通过GET方式获取:某信息(实时流,例如视频、音频等)通过PUSH方式获取。
2.方式一:通过GET方式获取媒体资源
(1)如果业务平台提供语音或视频资源(Audio或Video),通过SIP180消息中的Alert—info头域,指定资源信息。主叫侧UA (包括SIP终端、MGCF等)设备根据Alert—info中的HTTP信息,获取相应媒体资源。下载成功后, 向主叫用户播放相应的语音或视频文件。A1ert—info头域的语法规则为:
Alert—Info= “Alert—Info HCOLONalert—param (C0MMA alert—param )alert—param=LAQUOT bsolute URIRAQUOT (SEMI generic—param )
简单示例为:
180Ring
Alert—info:http://wwwgsta.com/1.wav
注:1 80消息之前的其他消息没有示例。
(2)如果业务平台提供其他资源(非实时流) 例如图片,卡片、个人网页等信息,则通过SIP消息180消息中的Call—info头域,指定资源信息。主叫侧UA 设备下载成功后,将向主叫用户呈现下载的相关信息。
注:● 根据业务需求.call—info与Alert—info头域可同时存在于180消息中。
● 由于电路交换网络或终端的限制 MGCF设备无需关心该域。
Feb 08 2009
最早接触回拨卡是在2004年,那时候用的一种叫E情卡的,运营商是汕头的万人迷公司,这个卡05年年初的时候因为漏洞被盗了不少话费,后来封杀了不少黑话卡,不少代理贪便宜受损失。2005年两会期间,好多回拨卡都停了,只有一种叫D卡的卖的很火,但是这个卡很快就消失了,因为成本太高,回拨要用两条线路,而批发价格一般都只有7分5一分钟,运营商卷了代理商跑了,据说后来又换了地方重新骗人。大概到5月份的时候E情卡找到了新的落地,开始恢复了一部分。大概也是5月的时候,E卡山东总代青岛的老王从万人迷手里买了一套系统,开始自己做回拨卡,带走了E卡的山东大部分代理,这个卡叫NGN卡,好像一直运营到2008年才彻底停掉。2005年6月的样子出现一种卡叫四通卡,开始运行不错,后来也出现漏洞,被盗不少话费,运营商最后卷了代理几百万话费钱跑了。江西南昌的孙总,原来也是E卡代理,后来自己用盗版的普博1.0,搞了个家园卡,由于普博1.0的漏洞太多,后来自己也卷了一部分代理的钱跑了。在整个2006年是普博泛滥的一年,开始出现不计其数的运营商。因为盗版的普博太容易获得了。其中普博1.1被改造成普博1.3。甚至改名叫普博3.0,后来又有人和VPS安装在一起,替换到WEB管理平台,换个名字叫智慧人回拨系统。也有人把这个系统冒充普博2.0,实际上真正的普博2.0是JSP平台,和普博1.1有非常大的差别了。也有人加VPS后用.NET重新写了WEB界面,改名叫可可通。由于盗版的泛滥,杭州普博公司维持不下去了,只开发到普博2.0就转行了。所以普博回拨系统最高版本只有2.0,普博2.0可以支持预约时报余额。这是目前唯一可以可以预约报余额的系统。
由于回拨系统的特殊方式,导致成本高,零售价在1猫以下,可以说基本在骗人,否则赚不到钱。但是还是要感谢回拨卡在2005年的时候确实给我省下不少电话费,毕竟计算计费不准,1毛多手机打长途还是很划算的。
Feb 01 2009
时间过的真是太快了,一眨眼又过去一年了,2008年是惨痛的一年。希望牛年能牛一点。
23号那天差点没赶上火车,本来都挺顺利的,结果在公交车上有个家伙丢了手机,非要等110来,不让大家下车,等了10几分钟110才来,我拿出火车票才让我下车,下车半天又打不到车,好不容易打到车赶到火车站,已经开始检票了。总算有惊无险。
大年初4那天喝醉了,吐的很厉害,晕的很,还把水龙头给掰坏了。最近右眼皮一直在跳,不知道会怎么样,在回来飞机上一直担心,总算飞机平安着地了。
Dec 15 2008
今天重启系统,突然上不了网了,网络连接故障。查找日志,发现是ipsec服务没有启动。打开本地安全策略,出现,不能打开IPSEC策略存储容器,找不到指定文件错误。最后解决
删除[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local]
然后重建ipsce
在CMD里输入regsvr32 polstore.dll
Dec 13 2008
每天的IP都是只有200多IP访问,今天偶尔上统计查看,吓我一大跳,PV居然过万,这是自从年初百度降权之后重新冲破1000IP,而且昨天就突破5000IP。仔细分析了统计数据,发现大部分流量都是从QQ来的,不晓得是哪个把我博客某篇文章转发到QQ论坛上,居然一天就来了7000多IP,看来QQ真是太强大了。以前百度收录多的时候最多也就给我带过3000IP。SOSO取代BAIDU应该是早晚饿事情
Dec 04 2008
VOS的盗版政策初见成效了,到处都在谈论VOS了,各大VOIP的BBS掀起一轮学习VOS的热潮,相比而言SVSS的就冷清多了,毕竟还不是太稳定的版本,用户的新鲜劲过了之后重归理性。
Nov 28 2008
这个月不小心碰到山寨机的短信陷阱,又被扣了12元。气死我了,后来在网上找到一个办法,就是打10086关闭梦网短信功能,这样再不小心碰到那些陷阱就会收到短信:
由于未经您的授权,本次请求未成功,如需使用,请致电10086中国移动进行开通。
Nov 28 2008
最近在维护一个SDK写的程序,某个显示界面要使用表格控件,在网上搜索了很多人的文章,参考了http://topic.csdn.net/t/20020702/14/843997.html 和http://www.titilima.cn/show-64-1.html 这两篇文章,做了个个MSFLXGRID.OCX版的测试程序,在VC++6中通过。
// testgrid.cpp : Defines the entry point for the application.
//
#include “stdafx.h”
#import “c:\windows\system32\msflxgrd.ocx”
#include <atlbase.h>
CComModule _Module;
#include <atlwin.h>
#pragma comment(lib,”atl”)
#define ODS(x) OutputDebugString(x)
// 处理连接点事件的接收器实现
class CFlexGridSink : public MSFlexGridLib::DMSFlexGridEvents
{
public:
CFlexGridSink() :m_pFlexGrid(NULL),m_dwRef(1),m_hrConnected(CONNECT_E_CANNOTCONNECT), m_dwCookie(0),m_pCP(NULL)
{
}
~CFlexGridSink()
{
}
//控件初始化操作
HRESULT Init(MSFlexGridLib::IMSFlexGrid* pWin)
{
HRESULT hr = NOERROR;
LPCONNECTIONPOINTCONTAINER pCPC = NULL;
if (m_pFlexGrid)
m_pFlexGrid->Release();
m_pFlexGrid = pWin;
if (FAILED(hr = pWin->QueryInterface(IID_IConnectionPointContainer, (LPVOID*)&pCPC)))
goto Error;
if (FAILED(hr = pCPC->FindConnectionPoint(__uuidof(MSFlexGridLib::DMSFlexGridEvents), &m_pCP)))
goto Error;
m_hrConnected = m_pCP->Advise((LPUNKNOWN)this, &m_dwCookie);
ODS(”Init runs well”);
Error:
if (pCPC) pCPC->Release();
return hr;
}
HRESULT Passivate()
{
HRESULT hr = NOERROR;
if (m_pCP)
{
if (m_dwCookie)
{
hr = m_pCP->Unadvise(m_dwCookie);
m_dwCookie = 0;
}
m_pCP->Release();
m_pCP = NULL;
}
if (m_pFlexGrid)
{
m_pFlexGrid->Release();
m_pFlexGrid = NULL;
}
return NOERROR;
} //初始化结束
// IUnknown 方法
STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppv)
{
*ppv = NULL;
if (IID_IUnknown == riid)
{
*ppv = (LPUNKNOWN)this;
AddRef(); ODS(”IID_IUnknown”);
return NOERROR;
}
else if (IID_IDispatch == riid)
{
*ppv = (IDispatch*)this;
AddRef(); ODS(”IID_IDispatch”);
return NOERROR;
}
else if(riid==__uuidof(MSFlexGridLib::DMSFlexGridEvents))
{
*ppv = (MSFlexGridLib::DMSFlexGridEvents*)this;
AddRef(); ODS(”DMSFlexGridEvents引用\n”);
return NOERROR;
}
else
{
OLECHAR wszBuff[39];
int i = StringFromGUID2(riid, wszBuff, 39);
TCHAR szBuff[39];
i = WideCharToMultiByte(CP_ACP, 0, wszBuff, -1, szBuff, 39, NULL, NULL);
ODS(”DMSFlexGridEvents QI: “); ODS(szBuff); ODS(”\n”);
return E_NOTIMPL;
}
}
//////////////////////////////////
STDMETHOD_(ULONG,AddRef)()
{
TCHAR szBuff[255];
wsprintf(szBuff, “引用增加CFlexgridSink refcount increased to %d\n”, m_dwRef+1);
ODS(szBuff);
return ++m_dwRef;
}
////////////////////////////
STDMETHOD_(ULONG, Release)()
{
TCHAR szBuff[255];
if (–m_dwRef == 0)
{
ODS(”删除Deleting CFlexgridSink\n”);
delete this;
return 0;
}
wsprintf(szBuff, “减少到:CFlexgridSink refcount reduced to %d\n”, m_dwRef);
ODS(szBuff);
return m_dwRef;
}
/////////////////////////////////
// IDispatch method
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo)
{ ODS(”GetTypeInfoCount\n”); return E_NOTIMPL; }
STDMETHOD(GetTypeInfo)(UINT iTInfo,
LCID lcid,
ITypeInfo** ppTInfo)
{ ODS(”GetTypeInfo\n”); return E_NOTIMPL; }
STDMETHOD(GetIDsOfNames)(REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgDispId)
{ ODS(”GetIDsOfNames\n”); return E_NOTIMPL; }
STDMETHOD(Invoke)(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS __RPC_FAR *pDispParams,
VARIANT __RPC_FAR *pVarResult,
EXCEPINFO __RPC_FAR *pExcepInfo,
UINT __RPC_FAR *puArgErr)
{
TCHAR szBuff[255];
long x,y;
// wsprintf(szBuff, “pVarResult: %d,事件发生: %x\n”, pVarResult, dispIdMember);
//ODS(szBuff);
//ODS(”事件发生\n”);
/*if (!pVarResult)
{
return E_POINTER;
} */
switch(dispIdMember)
{
case DISPID_CLICK:
m_pFlexGrid->get_MouseRow(&x);
m_pFlexGrid->get_MouseCol(&y);
wsprintf(szBuff, “鼠标单击 行:%d, 列:%d\n”, x, y);
MessageBox(NULL,szBuff,”测试一个程序”,MB_OK);
break;
//case 0×47:
//MessageBox(NULL,”Entercell”,”测试一个程序”,MB_OK);
//break;
case DISPID_DBLCLICK:
ODS(”DblClick”);
break;
case DISPID_READYSTATECHANGE:
ODS(”OnReadyStateChange”);
break;
default:
TCHAR szBuff[255];
wsprintf(szBuff,”dispIdMember=%d”,dispIdMember);
ODS(szBuff);
return DISP_E_MEMBERNOTFOUND;
}
return NOERROR;
}
/////////////////////////
private:
MSFlexGridLib::IMSFlexGrid* m_pFlexGrid;
DWORD m_dwRef;
LPCONNECTIONPOINT m_pCP;
HRESULT m_hrConnected;
DWORD m_dwCookie;
};//类结束
HINSTANCE hInst;
CAxWindow m_container;
CFlexGridSink g_FlexGrid;
using namespace MSFlexGridLib;
IMSFlexGrid* flxdbg;
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
AtlAxWinInit();
hWnd = CreateWindow(”mydoc”, “this test windows”, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
BOOL InitInstance(HINSTANCE, int);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;//(LPCSTR)IDC_FLSH;
wcex.lpszClassName = “mydoc”;
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wcex);
CoInitialize(NULL);
if (!InitInstance (hInstance, nCmdShow)) return FALSE;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_CREATE:
RECT rc;
CreateWindow(TEXT(”BUTTON”),TEXT(”按钮(&A)”),
WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON, 10, 10, 100, 30, hWnd, (HMENU)1000, //控件ID
((LPCREATESTRUCT) lParam)->hInstance, //实例句柄
NULL); //创建一个按钮
GetClientRect(hWnd, &rc );
rc.top = rc.top+50;
m_container.Create( hWnd, rc, LPCTSTR(”MsFlexGridLib.MSFlexGrid”), WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL );
m_container.QueryControl( __uuidof(IMSFlexGrid), reinterpret_cast<void**>(&flxdbg) );
g_FlexGrid.Init (flxdbg);
flxdbg->ColWidth[1]=1500;
//flxdbg->put_BackColor(180)
flxdbg->PutBackColorSel(180);
flxdbg->put_Rows(10);
flxdbg->put_Cols (10);
flxdbg->AllowUserResizing=flexResizeBoth;
flxdbg->FixedCols =0;
//flxdbg->put_RowSel(10);
flxdbg->Row =3;
flxdbg->ColSel=8;
flxdbg->put_CellBackColor(0xff0000);
flxdbg->Row =5;
flxdbg->ColSel=8;
flxdbg->put_CellBackColor(0xff0000);
flxdbg->put_TextMatrix(0,0,SysAllocString(L”槽号”));
flxdbg->put_TextMatrix(1,0,SysAllocString(L”101″));
flxdbg->put_TextMatrix(0,1,SysAllocString(L”电流”));
flxdbg->put_TextMatrix(1,1,SysAllocString(L”160″));
flxdbg->put_TextMatrix(0,2,SysAllocString(L”电压”));
// return 0;
break;
case WM_SIZING:
GetClientRect(hWnd, &rc );
rc.top = rc.top+100;
m_container.MoveWindow(&rc,true);
// flxdbg->Rows->
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case 1000:
{
MessageBox(NULL,”按钮按下了”,”测试一个程序”,MB_OK);
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
g_FlexGrid.Release ();
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}