Feb 22 2009

大学路上的巴西烤肉

Tag: 杂七杂八admin @ 11:03 pm

大学路上新开了一家巴西烤肉,每人36元,自助餐。里面自助餐的品种并不多。也就5-6种中餐,2-3种面包,一些水果萨拉,3-4种果汁,速溶咖啡,然后就是烤肉了,大概有10来种烤的东西,每次只有一小点,连烤香蕉都上了,非常小的一段,还有街上到处都是的台湾烤肠,街上一块钱一根的,这里两个人才分一根。印象最深刻的是烤牛舌头,第一次吃这个东西感觉特别不爽,那舌头好像是生的一样,特别软,就好像你在和牛接吻一样,感觉非常别扭,很不习惯。


Feb 19 2009

SIP协议实现彩铃方法

Tag: VOIP和软交换admin @ 10:19 am

在基于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

我了解的回拨卡历程

Tag: VOIP和软交换admin @ 12:15 am

最早接触回拨卡是在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

又混过了一年

Tag: 其他admin @ 9:54 am

时间过的真是太快了,一眨眼又过去一年了,2008年是惨痛的一年。希望牛年能牛一点。

23号那天差点没赶上火车,本来都挺顺利的,结果在公交车上有个家伙丢了手机,非要等110来,不让大家下车,等了10几分钟110才来,我拿出火车票才让我下车,下车半天又打不到车,好不容易打到车赶到火车站,已经开始检票了。总算有惊无险。

大年初4那天喝醉了,吐的很厉害,晕的很,还把水龙头给掰坏了。最近右眼皮一直在跳,不知道会怎么样,在回来飞机上一直担心,总算飞机平安着地了。


Dec 15 2008

不能打开IPSEC策略存储容器 的解决办法

Tag: 网络安全admin @ 10:46 am

今天重启系统,突然上不了网了,网络连接故障。查找日志,发现是ipsec服务没有启动。打开本地安全策略,出现,不能打开IPSEC策略存储容器,找不到指定文件错误。最后解决

删除[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local]

然后重建ipsce

在CMD里输入regsvr32 polstore.dll


Dec 13 2008

搞笑的胸罩广告

Tag: 娱乐八卦, 杂七杂八admin @ 10:49 pm

很有意思


Dec 13 2008

今天访问量居然突破7000IP

Tag: 网站资源admin @ 10:12 pm

每天的IP都是只有200多IP访问,今天偶尔上统计查看,吓我一大跳,PV居然过万,这是自从年初百度降权之后重新冲破1000IP,而且昨天就突破5000IP。仔细分析了统计数据,发现大部分流量都是从QQ来的,不晓得是哪个把我博客某篇文章转发到QQ论坛上,居然一天就来了7000多IP,看来QQ真是太强大了。以前百度收录多的时候最多也就给我带过3000IP。SOSO取代BAIDU应该是早晚饿事情


Dec 04 2008

VOS的盗版政策

Tag: VOIP和软交换admin @ 3:48 pm

VOS的盗版政策初见成效了,到处都在谈论VOS了,各大VOIP的BBS掀起一轮学习VOS的热潮,相比而言SVSS的就冷清多了,毕竟还不是太稳定的版本,用户的新鲜劲过了之后重归理性。


Nov 28 2008

搞定了山寨机垃圾短信陷阱

Tag: 其他admin @ 1:41 pm

这个月不小心碰到山寨机的短信陷阱,又被扣了12元。气死我了,后来在网上找到一个办法,就是打10086关闭梦网短信功能,这样再不小心碰到那些陷阱就会收到短信:

由于未经您的授权,本次请求未成功,如需使用,请致电10086中国移动进行开通。


Nov 28 2008

程序调用MSFLXGRID.OCX例子

Tag: 杂七杂八admin @ 9:04 am

最近在维护一个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;  
  }


下一页 »