Tuesday, October 29, 2013

New version of pkrssv2 in the Android Market

=20


=09
=09
































Hello lian deliang,
You've just released the 2.19 version of your "pkrssv2"=
app on the official Android Market.

You've uploaded the 2.05 version to AndroidPIT. Please upload the latest ve=
rsion to AndroidPIT, so that AndroidPIT users can also install the latest v=
ersion of your app.

Just click on "Upload upgrade" on your developer page for the "pkrssv2" app=
.

Access your developer page here:
http://www.androidpit.com/developer/3=
433529/lian-deliang

Best,
Your AndroidPIT Team









NOTICE:
You've received this e-mail because you've uploaded the "pkrssv2" app to th=
e www.androidpit.com website and you have recently released a new version o=
f this app on the official Android Market.=20






Home =C2=A0|=C2=A0
Help =C2=A0|=C2=A0
Terms & Conditions =C2=A0|=C2=A0
About us =C2=A0|=C2=A0
Contact

Tuesday, October 22, 2013

New version of pkrssv2 in the Android Market

=20


=09
=09
































Hello lian deliang,
You've just released the 2.19 version of your "pkrssv2"=
app on the official Android Market.

You've uploaded the 2.05 version to AndroidPIT. Please upload the latest ve=
rsion to AndroidPIT, so that AndroidPIT users can also install the latest v=
ersion of your app.

Just click on "Upload upgrade" on your developer page for the "pkrssv2" app=
.

Access your developer page here:
http://www.androidpit.com/developer/3=
433529/lian-deliang

Best,
Your AndroidPIT Team









NOTICE:
You've received this e-mail because you've uploaded the "pkrssv2" app to th=
e www.androidpit.com website and you have recently released a new version o=
f this app on the official Android Market.=20






Home =C2=A0|=C2=A0
Help =C2=A0|=C2=A0
Terms & Conditions =C2=A0|=C2=A0
About us =C2=A0|=C2=A0
Contact

Sunday, October 20, 2013

Wednesday, October 16, 2013

share my writed messagebox with duilib by cpp

1.todo

my partern need me replace all messagebox windows style with same as worker window style. our project is used duilib.

2.code

1.dialog_newpersonal.xml

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="285,161" sizebox="6,6,6,6" caption="0,0,0,36" mininfo="80,60" roundcorner="5,5">
<VerticalLayout bordersize="1" width="330" height="198" bkcolor="#FFFFFFFF" bkcolor2="#FF477FFF" bordercolor="#FF4775CC">
<HorizontalLayout name="header" height="32" padding="1,0,1,2" bkcolor="#FF1E94DC">
<HorizontalLayout>
<Control width="10" />
<Label name="title" text="信息提示" textcolor="#FFFFFFFF" disabledtextcolor="#FFA7A6AA" font="1" />
</HorizontalLayout>
<HorizontalLayout width="49" height="25">
<Button name="minbtn" tooltip="最小化" visible="false" width="33" height="22" align="center" normalimage="file=&apos;btn_mini_normal.png&apos;" hotimage="btn_mini_highlight.png" pushedimage="btn_mini_down.png" />
<Button name="closebtn" tooltip="关闭" width="40" height="22" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" normalimage="file=&apos;btn_close_normal.png&apos;" hotimage="btn_close_highlight.png" pushedimage="btn_close_down.png" />
</HorizontalLayout>
</HorizontalLayout>
<HorizontalLayout name="bg" width="278" height="119" padding="2,2,2,2" bkcolor="#FFDDF2FF">
<Button name="btnOk" text="确定" float="true" pos="41,71,0,0" width="75" height="24" textpadding="4,2,4,3" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" font="1" align="center" normalimage="file=&apos;main\button_p.png&apos;" hotimage="file=&apos;main\button.png&apos; mask=&apos;0xffffffff&apos;" pushedimage="file=&apos;main\button_h.png&apos; mask=&apos;0xffffffff&apos;" />
<Label name="message" float="true" pos="6,5,0,0" width="265" height="53" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" font="1" align="center" />
<Button name="btnCancel" text="取消" float="true" pos="171,70,0,0" width="75" height="24" textpadding="4,2,4,3" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" font="1" align="center" normalimage="file=&apos;main\button_p.png&apos;" hotimage="file=&apos;main\button.png&apos; mask=&apos;0xffffffff&apos;" pushedimage="file=&apos;main\button_h.png&apos; mask=&apos;0xffffffff&apos;" />
</HorizontalLayout>
</VerticalLayout>
</Window>



2.Dialog_Info_Base.h

class CDialog_Info_Base : public CusWindowImplBase
{
public:
/// 构造函数
/// \param hwnd 窗口句柄
/// \param curDstId 当前联系人的用户ID
CDialog_Info_Base(HWND hwnd,const char* curDstId);

protected: // public:
HWND m_hMainWnd; /// 窗口句柄
std::wstring kIdNewOrUpdate; /// 当前加载的对话框类型ID
bool isCtrl; /// 是否按下ctrl键

std::string m_CurDstUId; /// 当前联系人的用户ID

std::wstring mExitPromotMessage; /// 退出窗口的提示消息

// 系统标题栏菜单
const TCHAR* kTitleControlName;
const TCHAR* kCloseButtonControlName;
const TCHAR* kMinButtonControlName;
const TCHAR* kMaxButtonControlName;
const TCHAR* kRestoreButtonControlName;

protected:

/// 取DUI窗口类名
/// \return 窗口类名
virtual LPCTSTR GetWindowClassName() const;

/// 取界面XML文件
/// \return 界面XML文件路径.默认返回 "dialog_info.xml"
virtual CDuiString GetSkinFile();

/// 初始化
virtual void Init();

/// 响应退出事件
virtual void OnExit(TNotifyUI& msg);

/// 响应通知事件
virtual void Notify(TNotifyUI& msg);

/// 响应界面消息
virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
};





3.Dialog_Info_Base.cpp

#include "stdafx.h"
#include "Dialog_Info_Base.h"
#include "UserUI.h"

CDialog_Info_Base::CDialog_Info_Base(HWND hwnd,const char* curDstId)
{
if(!curDstId)
curDstId = "";
swl_setkey((std::string("CDialog_Info_Base_")+curDstId).c_str());

kTitleControlName = _T("apptitle");
kCloseButtonControlName = _T("closebtn");
kMinButtonControlName = _T("minbtn");
kMaxButtonControlName = _T("maxbtn");
kRestoreButtonControlName = _T("restorebtn");

mExitPromotMessage = _T("确定关闭?");

isCtrl = false;
m_hMainWnd = hwnd;
kIdNewOrUpdate = _T("");

if(curDstId)
m_CurDstUId = curDstId;
else
ASSERT(0 && "当前联系人ID非法!");
}

/// 取DUI窗口类名
LPCTSTR CDialog_Info_Base::GetWindowClassName() const
{
return _T("TXGuiFoundation");
}

/// 取界面XML文件
CDuiString CDialog_Info_Base::GetSkinFile()
{
return _T("dialog_info.xml");//个人通讯录查看/编辑联系人对话框
}

/// 响应界面消息
LRESULT CDialog_Info_Base::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg==WM_KEYDOWN){
if(wParam==VK_CONTROL){
isCtrl = true;
}
}else if(uMsg==WM_KEYUP){

if(wParam==VK_CONTROL){
isCtrl = false;
}
}
return __super::HandleMessage(uMsg, wParam, lParam);
}

/// 响应退出事件
void CDialog_Info_Base::OnExit(TNotifyUI& msg)
{
Close();
}

/// 初始化
void CDialog_Info_Base::Init(){
__super::Init();
}


void CDialog_Info_Base::Notify(TNotifyUI& msg)
{
if (_tcsicmp(msg.sType, _T("click")) == 0)
{
if (_tcsicmp(msg.pSender->GetName(), kCloseButtonControlName) == 0)
{
if(!mExitPromotMessage.empty()){
int iResult = UserUI::MessageBox(this->m_hWnd, mExitPromotMessage.c_str(), _T("信息提示"), MB_OKCANCEL);
if(iResult ==1)
{
OnExit(msg);
}
}else{
OnExit(msg);
}
}else if (_tcsicmp(msg.pSender->GetName(), kMinButtonControlName) == 0)
{
::ShowWindow(m_hWnd, SW_MINIMIZE);
}
else if (_tcsicmp(msg.pSender->GetName(), kMaxButtonControlName) == 0)
{
SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0);
}
else if (_tcsicmp(msg.pSender->GetName(), kRestoreButtonControlName) == 0)
{
SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
}
}
}



4.class CMyMessageBox code:

class CMyMessageBox : public CDialog_Info_Base{
private:
UINT mType;
std::wstring mTitle,mMessage;
public:
CMyMessageBox(HWND hwnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) : CDialog_Info_Base(hwnd,0){
mExitPromotMessage.clear();

mType = uType;
mTitle = lpText;
mMessage = lpCaption;
}
virtual CDuiString GetSkinFile(){
return _T("dialog_messagebox.xml");
}

virtual void Init(){
CDialog_Info_Base::Init();

CControlUI* pControl;

if(!mTitle.empty()){
pControl = paint_manager_.FindControl(_T("title"));
if(pControl)
pControl->SetText(mTitle.c_str());
}

if(!mMessage.empty()){
pControl = paint_manager_.FindControl(_T("message"));
if(pControl)
pControl->SetText(mMessage.c_str());
}

if(mType == MB_OK){
pControl = paint_manager_.FindControl(_T("btnCancel"));
if(pControl)
pControl->SetVisible(false);

pControl = paint_manager_.FindControl(_T("btnOk"));
if(pControl){
SIZE pos = pControl->GetFixedXY();
pos.cx += 60;
pControl->SetFixedXY(pos);
}
}
}

LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg==WM_KEYUP){
if(wParam==VK_RETURN){
PostMessage(WM_CLOSE,IDOK,0);
}
}
return __super::HandleMessage(uMsg, wParam, lParam);
}

void Notify(TNotifyUI& msg)
{
if (_tcsicmp(msg.sType, _T("click")) == 0)
{
if (_tcsicmp(msg.pSender->GetName(), _T("btnOk")) == 0)
{
PostMessage(WM_CLOSE,IDOK,0);
}else if (_tcsicmp(msg.pSender->GetName(), _T("btnCancel")) == 0)
{
PostMessage(WM_CLOSE,IDCANCEL,0);
}
}
__super::Notify(msg);
}
};



5.MessageBox function


need namespace to fixed function name confit

/// 弹出消息对话框
int MessageBox( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType){
int ret = -1;
if(!hWnd && systeminfo){
hWnd = systeminfo->MainHwnd;
}
CMyMessageBox* wnd = new CMyMessageBox(hWnd,lpText,lpCaption,uType);
do{
if(!wnd)
break;
if(!wnd->Create(hWnd, _T("Dialog"), UI_WNDSTYLE_DIALOG, UI_WNDSTYLE_EX_DIALOG))
break;
wnd->CenterWindow();
ret = (int)wnd->ShowModal();
}while(false);
if(wnd)
delete wnd;
return ret;
}

3.result


screenshots:


image




image


test:

if(IDOK == UserUI::MessageBox(this->m_hWnd, _T("确认关闭!"), _T("提示"),MB_OKCANCEL))
// code...

Tuesday, October 15, 2013

=B7=D6=B3=C9=D5=CB=B5=A5

------=_Part_2120_21364835.1381843652995
Content-Type: text/html;charset=GB2312
Content-Transfer-Encoding: quoted-printable




=B7=D6=B3=C9=D5=CB=B5=A5

body{font-size:12px;text-align:center;}
#wrap img{border:none;}
#wrap a{color:#094faa;text-decoration:none;}
#wrap *{padding:0;margin:0;}
#wrap i{font-style:normal;}
#wrap .left{float:left;width:402px;}
#wrap .right{float:left;width:185px;padding-top:93px;}
#wrap .right a{margin-bottom:21px;display: block;}
#wrap .left dl{padding:119px 0 0 41px;}
#wrap .left h3{background:url(http://u5.mm-img.com/rs/res/publish/settlemen=
t/images/h3bg.jpg) no-repeat;color:#0a4a85;font-size:12px;height:25px;paddi=
ng:22px 0 14px 43px;margin-top: 12px;}
#wrap .left dt{padding-bottom:13px;}
#wrap .left dt i{font-size:14px;font-weight:bold;color:#004395;}
#wrap .left dd{line-height:20px;width:305px;text-indent:24px;}
#wrap .left dd i{font-weight:bold;font-size:14px;color:#fe0000;}
#wrap{width:598px;border:1px solid #e0e0e0;background:url(http://u5.mm-img.=
com/rs/res/publish/settlement/images/topbg.jpg) top no-repeat;padding-botto=
m:22px;margin:0 auto;text-align:left;}

#wrap .list{text-align:center;width:309px;margin-left: 38px;border-bottom:1=
px solid #7ec0f6;padding-bottom:4px;}
#wrap .list th{color:#4f4f4f;font-weight:normal;margin-bottom:-1px;}
#wrap .list .title{background:#f2f7fb url(http://u5.mm-img.com/rs/res/publi=
sh/settlement/images/thbg.jpg) no-repeat top left;height:30px;line-height:3=
0px;}
#wrap .list td{height:30px;line-height:30px;border-top:1px solid #eee;}
#wrap .list td a{text-decoration: underline;}
#wrap .txt{background:url(http://u5.mm-img.com/rs/res/publish/settlement/im=
ages/bottombg.jpg) left bottom no-repeat;width:385px;margin:0 0 12px 8px;li=
ne-height:20px;}
#wrap .txt p{padding:15px 40px 20px 41px;}
#wrap .txt a{font-size:14px;font-weight:bold;text-decoration:underline;}
#wrap .clearboth{height:0;clear:both;display:block;}
#wrap .tip{padding:19px 0 0 18px;background:url(http://u5.mm-img.com/rs/res=
/publish/settlement/images/tipbg.jpg) no-repeat 387px -10px;}
#wrap .tip h2{color:#f00;font-size:14px;padding-bottom:9px;}
#wrap .tip .brief{text-indent:24px;width:360px;line-height:20px;padding-bot=
tom:12px;}
#wrap .tipdetail{border:1px solid #aec5e3;width:558px;background:url(http:/=
/u5.mm-img.com/rs/res/publish/settlement/images/line.jpg) repeat-x bottom;p=
adding:12px 1px 20px 9px;margin-bottom:12px;}
#wrap .tipdetail .bd{margin:0 15px;border-top:1px dashed #a9c2e3;}
#wrap .tipdetail dd{line-height:24px;}
#wrap .tipdetail dd a{ text-decoration:underline;}
#wrap .tipdetail i{color:#f00;font-weight:bold;}
#wrap .pl12{padding-left:12px;}
#wrap .link1{float:left;display:inline;margin:0 0 0 9px;}
#wrap .link2{float:right;display:inline;margin:22px 12px 0 0;}






=09

=09
=C1=AC=B5=C2=C1=C1 =A3=AC=C4=E3=BA=C3=A3=BA

=09

=C4=FA=D4=DA=D2=C6=B6=AF=D3=A6=D3=C3=C9=CC=B3=A1=A3=A8Mobile =
Market=A3=A9 2013=C4=EA09=D4=C2=B5=C4=B7=D6=B3=C9=BD=E1=CB=E3=CA=D5=
=C8=EB=BA=CF=BC=C6=CE=AA=A3=BA29.4 =D4=AA=A1=A3=C8=E7=C4=FA=B1=
=BE=C6=DA=BD=E1=CB=E3=CA=D5=C8=EB=B5=BD=B4=EF5000=D4=AA=BB=F2=D2=D4=C9=CF=
=A3=AC=C7=EB=C4=FA=B0=B4=D5=D5=BF=AA=B7=A2=D5=DF=C9=E7=C7=F8=C9=CF=B5=C4=BD=
=D3=CA=D5=B7=A2=C6=B1=B0=B2=C5=C5=B9=AB=B8=E6=A3=AC=CD=EA=B3=C9=B7=A2=C6=B1=
=B5=C4=CC=E1=BD=BB=A1=A3=D0=BB=D0=BB=A3=A1

=09

•=B7=D6=B3=C9=D5=CB=B5=A5=C3=F7=CF=B8•








=09=09=09
=D3=A6=D3=C3=C3=FB=B3=C6 =D2=B5=CE=F1=B4=FA=C2=EB =CA=D5=C8=EB
=D3=EF=D2=F4=C9=E8=D6=C3=BB=CA227=
1932701
29.4


=09

=C8=E7=D0=E8=B2=E9=D1=AF=C9=CF=D4=C2=BD=E1=CB=E3=CA=D5=C8=EB=
=A3=AC=C7=EB=B5=E3=BB=F7=B4=CB=B4=A6=B5=C7=C2=BD=BF=AA=B7=A2=D5=DF=C9=E7=C7=F8=
=D7=D4=B7=FE=CE=F1=C7=F8=B2=E9=D1=AF=A1=A3






=09
=09
=09
=09



=09

=CE=C2=DC=B0=CC=E1=CA=BE:


=C8=E7=D0=E8=CC=E1=B3=F6=B6=D4=D5=CB=C9=EA=C7=EB=
=A3=AC=C7=EB=D3=EB=BD=E1=CB=E3=B5=A5=B7=A2=B2=BC=B5=C430=B8=F6=D7=D4=C8=BB=
=C8=D5=C4=DA=A3=AC=B5=C7=C2=BD=BF=AA=B7=A2=D5=DF=C9=E7=C7=F8=D7=D4=B7=FE=CE=
=F1=C7=F8=B5=C4=BD=E1=CB=E3=B5=A5=B2=E9=D1=AF=BD=F8=D0=D0=C9=EA=C7=EB=A1=A3=



=09

=C8=E7=B9=FB=C4=FA=D3=D0=C8=CE=BA=CE=D2=C9=CE=CA,=C7=EB=
=C1=AA=CF=B5=BF=CD=B7=FE=D7=C9=D1=AF

=C1=AA=CF=B5=B7=BD=CA=BD=C8=E7=CF=C2=A3=BA

•=D6=D0=B9=FA=D2=C6=B6=AF=BF=AA=B7=A2=D5=DF=C9=E7=
=C7=F8=B7=FE=CE=F1=D3=CA=CF=E4=A3=BAapservice@chinamobile.com=A3=BB


•=B7=C9=D0=C5=BF=CD=B7=FE=BA=C5=A3=BA855552270=A3=BB


•139=CB=B5=BF=CD=B7=FE=CE=F1=A3=BA

1=A1=A2=B1=E0=BC=AD=B6=CC=D0=C5=A3=AC=B7=
=A2=CB=CD=A1=B0T=A1=B1=D6=C1106581039952228058=BC=B4=BF=C9=A1=A3

2=A1=A2=B5=C7=C2=BC139=CB=B5=BF=CD=A3=AC=
=D4=DA=D3=D2=B2=E0=B5=C4=A1=B0=B2=E9=D5=D2=CB=B5=BF=CD=A1=B1=D6=D0=CA=E4=C8=
=EB =A1=B0=BF=AA=B7=A2=D5=DF=BF=CD=B7=FE=A1=B1=BD=F8=D0=D0=B2=E9=D5=D2=A3=
=AC=C8=BB=BA=F3=B5=E3=BB=F7=A1=B0=CC=FDTA=CB=B5=A1=B1=BC=B4=BF=C9=A1=A3

3=A1=A2=B5=C7=C2=BC139=CB=B5=BF=CD=A3=AC=
=D4=DA=D3=D2=B2=E0=B5=C4=A1=B0=B2=E9=D5=D2=CB=B5=BF=CD=A1=B1=D6=D0=CA=E4=C8=
=EB =A1=B0=BF=AA=B7=A2=D5=DF=BF=CD=B7=FE=A1=B1=BD=F8=D0=D0=B2=E9=D5=D2=A3=
=AC=C8=BB=BA=F3=B5=E3=BB=F7=A1=B0=CC=FDTA=CB=B5=A1=B1=BC=B4=BF=C9=A1=A3



=B8=D0=D0=BB=C4=FA=
=B6=D4=D2=C6=B6=AF=D3=A6=D3=C3=C9=CC=B3=A1(Mobile Market)=B9=D8=D7=A2=D3=EB=
=D6=A7=B3=D6=A3=A1

=D6=D0=B9=FA=D2=C6=
=B6=AF=BF=AA=B7=A2=D5=DF=C9=E7=C7=F8







------=_Part_2120_21364835.1381843652995--

Friday, October 11, 2013

private cloud storage program – my draft log

1.owncloud

1.1 brief

ownCloud gives you universal access to your files through a web interface or WebDAV. It also provides a platform to easily view & sync your contacts, calendars and bookmarks across all your devices and enables basic editing right on the web. Installation has minimal server requirements, doesn’t need special permissions and is quick. ownCloud is extendable via a simple but powerful API for applications and plugins.

ownCloud started with a keynote by Frank Karlitschek at Camp KDE’10 where he talked about the need of a self-controlled free and open source cloud.

为了给用户提供免费的替代,3 年前,Frank Karlitschek 开发了开源版的文件存储、同步及共享软件包ownCloud。目前,该软件包已经正式推出了 4 个版本,支持 42 种语言。除了具备 Dropbox 或 Box.net 的基本功能以外,ownCloud 还支持通讯录、日历等功能。现在,ownCloud 又发布了 5.0 的 beta 版,预计将会在几周后正式推出。

1.2 screenshots

office website:

image

server: install:

image 

 

1.3 install

1.3.1 server package

prepare:

install for  iis

install web plateform installer for iis.

install php 5.3, mysql 5.5,webdav from install web plateform.after that,setting them,and remember enabled webdav on iis.

also can download phpmyadmin for operator mysql.

download and unpack it to your web wwwroot,then open it with browser.

then type new admin username,password, db user,db password,db name,db host,then next.

after iis setup owncloud,remebmer add mime type:

.svg image/svg+xml
.svgz image/svg+xml



a.error:
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
Please double check the installation guides.
fixed:
i used iis,and install webdav with web plateform installer.

b.error:
MySQL user 'oc_admin'@'localhost' exists already.
Drop this user from MySQL
fixed:
in phpmyadmin image 
select oc_admin rows and delete them.

c. warning:
没有安全随机码生成器,请启用 PHP OpenSSL 扩展。
没有安全随机码生成器,黑客可以预测密码重置令牌并接管你的账户。

fixed:

extension=php_openssl.dll

d. error:
then access http://localhost:801/t/owncloud2/ , it redirect too many timers to http://localhost:801/t/owncloud2/index.php?redirect_url=%2Ft%2Fowncloud2%2Findex.php%2Fapps%2Ffiles.
fixed:
install webdav for web server.
my develop log:
i find google result in here:Is this a bug? Installer on IIS7 redirect loop on index.php

but not fixed it, then i debug in here: lib\utils.cpp:

public static function checkLoggedIn() {
// Check if we are a user
if( !OC_User::isLoggedIn()) {
header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php',
array('redirect_url' => OC_Request::requestUri())));
exit();
}
}
and found inner is in lib\user.cpp:






public static function isLoggedIn() {
if( isset($_SESSION['user_id']) AND $_SESSION['user_id']) {
OC_App::loadApps(array('authentication'));
self::setupBackends();
if (self::userExists($_SESSION['user_id']) ) {
return true;
}
}
return false;
}
then i delete browser cookit,and open index page,type account and password to track it.
then i found here can break down in lib\user.php:
public static function login( $uid, $password ) {
$run = true;
OC_Hook::emit( "OC_User", "pre_login", array( "run" => &$run, "uid" => $uid ));

if( $run ) {
$uid = self::checkPassword( $uid, $password );
$enabled = self::isEnabled($uid);
if($uid && $enabled) {
session_regenerate_id(true);
self::setUserId($uid);
self::setDisplayName($uid);
OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid, 'password'=>$password ));
return true;
}
}
return false;
}
then found this in lib\user\database.php:
public function checkPassword( $uid, $password ) {
$query = OC_DB::prepare( 'SELECT `uid`, `password` FROM `*PREFIX*users` WHERE LOWER(`uid`) = LOWER(?)' );
$result = $query->execute( array( $uid));

$row=$result->fetchRow();
if($row) {
$storedHash=$row['password'];
if ($storedHash[0]=='$') {//the new phpass based hashing
$hasher=$this->getHasher();
if($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash)) {
return $row['uid'];
}else{
return false;
}
}else{//old sha1 based hashing
if(sha1($password)==$storedHash) {
//upgrade to new hashing
$this->setPassword($row['uid'], $password);
return $row['uid'];
}else{
return false;
}
}
}else{
return false;
}
}

and found this is no error.and then i found dav keywords.


e.error
Not enough space available 2mb
fixed:
first modify php.ini 
upload_max_filesize = 2G

but it chagned to limited by 8mb,so search by google.and say: OwnCloud 4.0.3 Max Upload Size = 0B?


so i change it in user default storage size with admin.


then error:

upload max. 8 MB


then i changed it in php.ini with:

post_max_size = 2G






f.warning:
{"app":"PHP","message":"PHP Startup: 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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0\/no DST' instead at Unknown#0","level":4,"time":"2013-10-12T06:13:33+00:00"}

fixed:


php.ini modify your locale: date.timezone =


1.3.2 client


after i install owncloud desktop client on my windows 8 x64.


error:

CSync: Permission deniend

Background message: 405 Method Not Allowed

then i used wireshark to capture network package,and result:

PROPFIND /owncloud/remote.php/webdav HTTP/1.1

User-Agent: Mozilla/5.0 (Windows) csyncoC/0.90.2 neon/0.29.6

Keep-Alive:

Connection: TE, Keep-Alive

TE: trailers

Host: 172.16.16.82:801

Proxy-Connection: Keep-Alive

Depth: 1

Content-Length: 206

Content-Type: application/xml

Cookie: 5258b6c008bfb=7lospeb7k6adu3blqeub05eij6;



HTTP/1.1 405 Method Not Allowed

Allow: GET, HEAD, OPTIONS, TRACE, LOCK, UNLOCK

Content-Type: text/html

Server: Microsoft-IIS/7.5

X-Powered-By: ASP.NET

Date: Sat, 12 Oct 2013 06:57:13 GMT

Content-Length: 1202



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>

<title>405 - .................... HTTP ......</title>

<style type="text/css">

<!--

body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}

fieldset{padding:0 15px 10px 15px;}

h1{font-size:2.4em;margin:0;color:#FFF;}

h2{font-size:1.7em;margin:0;color:#CC0000;}

h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}

#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;

background-color:#555555;}

#content{margin:0 0 0 2%;position:relative;}

.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}

-->

</style>

</head>

<body>

<div id="header"><h1>..........</h1></div>

<div id="content">

<div class="content-container"><fieldset>

<h2>405 - .................... HTTP ......</h2>

<h3>....................................................(HTTP ....)..</h3>

</fieldset></div>

</div>

</body>

</html>

<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"><prop>
<getlastmodified xmlns="DAV:"/>
<getcontentlength xmlns="DAV:"/>
<resourcetype xmlns="DAV:"/>
<getetag xmlns="DAV:"/>
</prop></propfind>
fixed:Propfind method not allowed

 


















2.SparkleShare


2.1 brief


SparkleShare creates a special folder on your computer. You can add remotely hosted folders (or "projects") to this folder. These projects will be automatically kept in sync with both the host and all of your peers when someone adds, removes or edits a file.


SparkleShare was made to cover certain use cases, but doesn't handle every scenario well. To help you decide if SparkleShare is right for you, here's a few examples of what it does well and less well with smiley faces:


Great


  • Frequently changing project files, like text, office documents, and images
  • Tracking and syncing files edited by multiple people
  • Reverting a file to any point in its history
  • Preventing spying on your files on the server using encryption

Not so great


  • Full computer backups
  • Storing your photo or music collection
  • Large binary files that change often, like video editing projects

Thursday, October 10, 2013

New version of pkrssv2 in the Android Market

=20


=09
=09
































Hello lian deliang,
You've just released the 2.06 version of your "pkrssv2"=
app on the official Android Market.

You've uploaded the 2.05 version to AndroidPIT. Please upload the latest ve=
rsion to AndroidPIT, so that AndroidPIT users can also install the latest v=
ersion of your app.

Just click on "Upload upgrade" on your developer page for the "pkrssv2" app=
.

Access your developer page here:
http://www.androidpit.com/developer/3=
433529/lian-deliang

Best,
Your AndroidPIT Team









NOTICE:
You've received this e-mail because you've uploaded the "pkrssv2" app to th=
e www.androidpit.com website and you have recently released a new version o=
f this app on the official Android Market.=20






Home =C2=A0|=C2=A0
Help =C2=A0|=C2=A0
Terms & Conditions =C2=A0|=C2=A0
About us =C2=A0|=C2=A0
Contact

Wednesday, October 9, 2013

DOMDocument cannot parse XML: Document labelled UTF-16 but has UTF-8 content

1.screenshots

when i get this url's rss data:

http://ipaper.ipapercms.dk/AfricanShareHolder/za/CVI/2002/RSS.ashx



2.error:

DOMDocument cannot parse XML: Document labelled UTF-16 but has UTF-8 content

fixed: see here:

$xml = preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $xml);  
 

Tuesday, October 8, 2013

found jquery mobile swipe event error in jquery.mobile.1.40 alpha2

1.screenshots:

code:

pkrss.q(document).on("swipeleft swiperight", "#"+this.name, function (e) { });

error:


when some seconds delay contents can’t scroll to bottom by touch behaviors.


2.fixed:


no used swipe event in current version jquery.mobile.


3.how


search jquery.mobile.css to search "scroll" keyword and jquery.mobile.js to found "touchstart" keywords.


then only found in jquery.mobile.js line:

// also handles swipeleft, swiperight
$.event.special.swipe = {
scrollSupressionThreshold: 30, // More than this horizontal displacement, and we will suppress scrolling.

durationThreshold: 1000, // More time than this, and it isn't a swipe.

horizontalDistanceThreshold: 10, // Swipe horizontal displacement must be more than this.

verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this.

start: function( event ) {
var data = event.originalEvent.touches ?
event.originalEvent.touches[ 0 ] : event;
return {
time: ( new Date() ).getTime(),
coords: [ data.pageX, data.pageY ],
origin: $( event.target )
};
},

stop: function( event ) {
var data = event.originalEvent.touches ?
event.originalEvent.touches[ 0 ] : event;
return {
time: ( new Date() ).getTime(),
coords: [ data.pageX, data.pageY ]
};
},

handleSwipe: function( start, stop, thisObject, origTarget ) {
if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";

triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }) );
triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ) );
return true;
}
return false;

},

setup: function() {
var thisObject = this,
$this = $( thisObject );

$this.bind( touchStartEvent, function( event ) {
var stop,
start = $.event.special.swipe.start( event ),
origTarget = event.target,
emitted = false;

function moveHandler( event ) {
if ( !start ) {
return;
}

stop = $.event.special.swipe.stop( event );
if ( !emitted ){
emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
}
// prevent scrolling
if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
event.preventDefault();
}
}

$this.bind( touchMoveEvent, moveHandler )
.one( touchStopEvent, function() {
emitted = true;
});
});
},

teardown: function() {
$( this ).unbind( touchStartEvent ).unbind( touchMoveEvent ).unbind( touchStopEvent );
}
};

then ,you may found "event.preventDefault();" in above. i try remove this line,and it can worked ok.


4. other


when i want to search "$.event.special.swipe.scrollSupressionThreshold", i search bellow content, speed up jquerymobile code: by here

// js code:
<script>
$(document).bind("mobileinit", function(){
$.mobile.touchOverflowEnabled = false;
$.mobile.defaultPageTransition = 'none';
$.mobile.defaultDialogTransition = 'none';
$.mobile.useFastClick = false
$.mobile.buttonMarkup.hoverDelay = 0;
$.mobile.page.prototype.options.domCache = false;
$.event.special.swipe.scrollSupressionThreshold = 100;
});
$(document).bind("touchstart", function(event){})
</script>

/**** css code *****/
.ui-body-a, .ui-bar-a, .ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,
.ui-body-b,.ui-bar-b,.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b,
.ui-body-c,.ui-bar-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,
.ui-body-d,.ui-bar-d,.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,
.ui-body-e,.ui-bar-e,.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e,
.ui-shadow-inset,
.ui-icon-shadow,
.ui-focus,
.ui-overlay-shadow,
.ui-shadow,
.ui-btn-active{
text-shadow: none !important;
box-shadow: none !important;
-moz-box-shadow: none !important;
-webkit-box-shadow: none !important;
-webkit-transform: translateZ(0);
}