为了认真贯彻文化部不久前出台的《文化部关于网络音乐发展和管理的若干意见》(http://www.cnbeta.com/modules.php?name=News&file=article&mode=flat&sid=19311)本blog将取消背景音乐,毕竟每首音乐备案太麻烦,而且老弟的音乐还要去文化部审批,555,没时间
今后可能会取消背景音乐或者放些红色经典:-P
各位在space、blog放置音乐的也要注意拉,每首歌都要去备案的!
预计离第二个Flash网站发布还剩下:6天
从该版本网站即后台的支撑系统ReformCore概念提出开始编写至今:一年又4个月(2005.7开工)
网站flash文件以及后台的ReformCore提供的API及各类method:近2000个
随着puXos和本地puXos缓存系统的完成,终于可以进行比较实际的网站开发了。
这个项目自从其开始起步到现在并没有一凡丰顺过。前前后后几乎4次因为学习或工作生活等方面原因停工又复工(可以参见以往的一些文章)。因此一直拖延至今才终于有了明确的完成期限。
在这段时间里面,这个项目一直成为我的一个心病,虽然有过想放弃开发的念头,不过还是坚持下来了...
严格的说,这1年多时间并不是花在做一个flash网站上面,因为按照目前编写的代码量来算,将来这个flash site V2真正展现在浏览者面前以及后台默默执行的部分估计只有30-40%。
主要原因是我从一开始就提过自己在做的是reformCore。他不是一个网站,而是一个属于我自己的平台系统。
目前包括的组件有:
服务端:
基本的安全函数,包括登陆验证,令牌管理,权限管理,反注入检测
基本的运行支持函数,如对各类底层对象的封装类,加密算法,邮件投递函数,动态插件库
环境监测函数,包括ip段识别,客户端授权认证
通讯组件,ReformPost RPC系统,puXos的reformPost前端
数据服务,puXos系统,用于puXos树形结构的uid管理器,以及各自的缓存系统
flash客户端:
ReformUI界面系统,组件包括:
XWindow,UIHost,TxtHolder,ScrollBar,progressBar,FlatButton,dragbar,LinkBtn,
PicSlider,TextTab,BlockView,ListView,tooltip,MessengBox
基本上是实现了一个windows的窗口环境,不过只是存在于flash中而已
ReformCore的客户终端
包括reformPost的事务化抽象管理器,本地令牌管理,puXos客户端以及数据缓存
本地Flash环境监测函数,包括浏览器历史监测,本地数据连接
Flash插件管理器及本地逻辑服务管理
音效管理
ReformScript解析器
基于ReformUI的网站组件,包括:BlockSys,MenuSys,LayoutMgr,ListView,BlockView,FlatView,ViewMgr
目前还在编写的部分是:Flash网站的版面插件以及音效管理器。
以前预计进度的时候是以每完成一个组件为1-2 %计算的
可能有人会问花了那么大力气作这个东西可能没有意义,这样说也对,毕竟这个网站做好了也不可能是盈利的,将来也只是作为我的个人网站,的确有点自娱自乐的目的。
我也曾经质问过自己,不过现在有一点是明确:经历了这个过程,也算是一种修行吧。毕竟那些组建是具有无限的扩充可能的,也为我积累了丰富的代码库。
好了,就当是我自言自语,毕竟这是我一个人做过的最大的项目了,经历了那么久,现在觉得很激动。
祈求上帝能让我安心的度过那最后一周的开发时间,了却这桩心事~
网站发布后我会编写一本函数参考手册,毕竟网站也是个编译器,呵呵,你可以在网站中修改或者增加些功能来
最后附上目前的一张截图:
(我将来的打算开发网站所有源文件,在必要的时刻,不过我不想看到自己的东西非法的遭受侵权)
一部科幻小说:《寂静之城》
或许里我们已经不远了,呵呵
今天和gf去看了下,还不错,贴上些我觉得有意思的图片,另外一些需要视频记录的内容我放在FTP上,有兴趣的可以来看看~
第六届上海双年展主页:http://www.shanghaibiennale.org
duration:2006-9-6 -- 2006-11-5
票价:¥20,学生:¥5(我证件放学校了,售票阿姨估计把我当....)
-----------------------------
以上2幅,名曰:英雄所见略同。自己看看有什么不对劲的?
中间那个人:实际是一个下凹的画面,由于DC无法感知深度,照片上就是凸起的
名:人造子宫,好像其中的液体是尿素~@Q#!~
厕所门前的超大LED阵列,怀疑只是用游客总数x平均体重求得的(数字不停的在更新...)
F2楼梯处的机器人,分雌性和雄性,此为雌性机器。详见视频
展开“花瓣”,向雄体提供能量
下次把手机作成戒指
霓虹灯组成的墙体,随时有一盏灯会亮、灭。亮灯时,与其灯管长度对应频率的古琴声会鸣起
让我想起一种用激光在水晶中雕刻的工艺品,可以DC拍摄效果不理想
pics:F3
黑暗中比较有感觉
这个房间的地板在墙上...
一开始看背面还以为是西瓜虫//
可以折出来么?
兽面人心?
不知道那些东西是不是真的?
好了,照片就贴这么多了,否则这个月流量要爆炸了~还有很多有趣的视频可以去我ftp下载来看~
ftp://FTP_visitor:visitor@ftp.csksoft.net/media/video/HYPER_DESIGN_2006/有一个拿紧急出口标牌做文章的视频,很恶搞,值得一看~还有那对雌雄机器人
明天就要真正意义上结束这个暑假开学了,其实对我来说只是休息了1周又重新上课...CS本学期在8.5号就开学了...回想一周前还是满脑子飞的EZ-UML、答辩、头脑秀逗得老师、GeneralLinkableXXXXX(为了保护小组各成员不至于再度发疯,部分字符已用XXX表示),这学期真的算不了什么。
下面是我最想说的
Flash Website v2
项目开工:2005.7.10
起因:我对我自己Flash网站v1的强烈不满
过程:想出了个ReformCore概念,设计了新的logo,弄来了嵌入式编译器
目的:制作更漂亮、更人性化、更加符合我审美的新Flash网站(后期加上的目标:符合web2.1)
结果:由于当时暑假考驾照,网站把ReformUI的雏形完毕即告流产
复工:2006.1.x
原因:放寒假了,没事可做
过程:完善ReformUI
结果:由于每天要赶早去徐汇上GRE,同时PRP项目在身,项目搁浅
复工x2:2006.7
原因:实在看不下这个难产的项目了+原先的设计不符合当前审美
过程:重新设计界面+开始写主要构架
结果:主要构架完成,但明天要开学了...
项目截至今天已经超过一年的建设时间了...天哪~
为了逼自己去完成这个项目,现把一些内部代码资料公布...
我不做解释,大家看情况理解吧~
mainsite.obj_main.AddBlock("test");
CreateWindow("GraphWin",40,50,true,Script_win);
GraphWin.SetClientSize(300,300);
GraphWin.SetWindowText("DoModal测试");
CreateUIHost(this,"obj",33);
obj.SetHostSize(1440,1000);
obj.StretchPic(false);
obj.CompleteLook(false);
obj.ShowBorder(false);
obj.LoadObject("http://www.csksoft.net/data/dawnofReform.jpg");
CreateWindow("OldSiteWin");
OldSiteWin.SetWindowText("以前的Flash网站-CSKSOFT WEBSITE v1 All right reserved");
OldSiteWin.SetWindowSize(753,580);
OldSiteWin.Attach("/fla/main.swf",true);
CreateWindow("win2");
win2.SetWindowText("PicWindow");
win2.SetWindowSize(500,350);
win2.Attach("http://www.csksoft.net/data/dawnofReform.jpg",true);
win2.container.objhost.SetLinkURL("http://www.csksoft.net/data/dawnofReform.jpg");
CreateWindow("rwin");
rwin.SetWindowText("外部组件调用");
rwin.SetClientSize(250,150);
rwin.Attach("fla/load_test.swf",true);
CreateUIHost(this,"obj",33);
obj.SetHostSize(250,150);
obj.LoadObject("fla/load_tedst.swf");
i=100;
t = setInterval(script, 10,
"if (i<=0) {clearInterval(t); t = undefined;}msgout(i);i--;",
this);
dwColor = 0x1a67f4;
CreateWindow("GraphWin",50,50);
GraphWin.SetClientSize(50,50);
GraphWin.container.beginFill(dwColor,0xFF);
GraphWin.container.moveTo(10, 10);
GraphWin.container.lineTo(10, 40);
GraphWin.container.lineTo(40, 40);
GraphWin.container.lineTo(40, 10);
GraphWin.container.lineTo(10, 10);
GraphWin.container.endFill();
CreateWindow("GraphWin",40,50);
GraphWin.SetClientSize(300,300);
GraphWin.SetWindowText("绘图窗口");
GraphWin.container.createEmptyMovieClip("graph",2);
with (GraphWin.container.graph) {
lineStyle (0, 0xFF0000, 100);
for (x = -5; x<5; x+=0.2) {
y= Math.sin(x)*30;
if (x==-5)
{
moveTo(x*30+150,150-y);
}
else
{
lineTo (x*30+150,150-y);
}
}
}
t = setInterval(script, 500,
"today_date = new Date();msgcls();msgout(today_date.toString());",
this);
CreateTween(Script_win,"_x","elastic.easein",10,400,50,100);
var sXML;
sXML=XML_CreateRPCRequest("GetBlogConfig",Array("bIsMiniMode","strToken"),Array("false",GLOBAL_strTokenID));
sXML.send("/sitecmd.asp","_blank");
var myObj;
myObj = new Object();
myObj.item1 = "aaa";
myObj.attributes=new Object();
myObj.attributes.id=3;
myObj.value = "ddd";
myObj.node = new Object();
myObj.node.value="ccc";
var myxml;
myxml = new XML("");
ConstructXmlSubTree(myxml,"ss",myObj,myxml);
msgout(myxml);
//XWindow //ReformUI.XWindow
SetWindowSize(nWidth:Number, nHeight:Number);
SetClientSize(nWidth:Number, nHeight:Number);
SetWindowText(sTitle:String);
GetWindowText():String;
SetWindowFocus();
GetListID():Number;
Attach(strObjID:String, bIsFromURL:Boolean):Boolean;
OnClose(); //CallBack
Destroy():Boolean; //return false if refused by OnClose();
ExpendWindow(bExpend:Boolean);
GetWindowState(nStateID:Number);
//nStateID=1 :IsTransAble
//nStateID=0 :IsExpend
AlphaBlendWindow(bAlpha:Boolean);
//---------------------------------------------------members
TitleBar //ReformUI.XWindow.TilteBar
container //ReformUI.XWindow.Container
var bIsObjFromURL:Boolean;
var bIsContained:Boolean;
generalObj,objhost
SetObj(strObjID:String,bIsFromURL:Boolean):Boolean
DestroyAll();
BottomBarA //ReformUI.XWindow.BottomBar
var nWindowID:Number;
var strHostID:String;
var nWindowHeight:Number;
var nWindowWidth:Number;
var bIsWindowExpend:Boolean;
var fInterval;
//----------------------------------------------------ReleatedAPI
GetTopLevelWindowID():Number;
GetWindowTopLevel():Number;
CloseAllWindow();
CreateWindow(strWindowID:String, nX:Number, nY:Number , bIsDoModal:Boolean , objParent);
XWindowList:Array;
var nXWinBoundWidth:Number,nXWinBoundHeight:Number;
GetXWinBoundBox():Array;
SetXWinBoundBox(nWidth:Number,nHeight:Number);
//UIHost //RefromUI.UIhost
LoadObject(sURL:String,bIsRes:Boolean);
IsObjLoaded():Boolean;
LoadPrecent():Number;
GetObjSize():Number;
StretchPic(bIsStretch:Boolean);
GetObjVersion():Number;
CustomFunction(FuncName:String, Arg1, Arg2); //var CustomResult
SetHostSize(nWidth:Number, nHeight:Number);
SetHostIDTitle(strTitle:String);
SetLinkURL(sURL:String);
ShowBorder(bIsShow:Boolean);
ShowDataInfo(bIsShow:Boolean);
CompleteLook(bIsShow:Boolean);
EnableClick(bEnable:Boolean);
Destroy();
//Events
OnClick(); return false when cancel
OnLoadComplete();
//---------------------------------------------------members
var HostWidth:Number, HostHeight:Number;
var IsContendObj:Boolean;
var ObjURL:String;
var HostIDName:String;
var ObjVersion:Number;
var LinkURL:String;
var IsShowBorder:Boolean;
var bIsSretchPic:Boolean;
var CustomArg1, CustomArg2, CustomResult;
objcontainer
//----------------------------------------------------ReleatedAPI
CreateUIHost(strParentID:String, strHostID:String, nLevel:Number, nX:Number, nY:Number)
//TxtHolder //ReformUI.TxtHolder
SetSize(nWidth:Number, nHeight:Number);
GetSize():Array;
EnableScrollBar(bEnabled:Boolean);
EnableEditable(bEnabled:Boolean);
UpdateLayout();
EnableWordWrap(bEnabled:Boolean);
/////////////////////////////////
//Not complete yet!
LoadTxt(strURL:String, bIsHtml:Boolean, nPostMethod:Number);
//////////////////////////////////
SetText(strT:String, bIsHtml:Boolean);
GetText(bNeedSrc:Boolean):String;
UpdateScrollBar();
ClearText();
Destroy();
//---------------------------------------------------members
var nSelfHeight:Number, nSelfWidth:Number;
var bIsEnableScrollBar:Boolean;
var bIsEnableWordwrap:Boolean;
hbar,scrollbar;
//----------------------------------------------------ReleatedAPI
CreateTxtHolder(strParentID:String, strHolderID:String, nLevel:Number, nX:Number, nY:Number);
//ScrollBar //ReformUI.ScrollBar
UpdateBar();
SetStepLength(nStep:Number);
GetStepLength():Number;
SetBarLength(nHeight:Number); //def=100;
GetBarLength():Number;
SetRange(nMaxPos:Number); //startup with 100
GetRange():Number;
OnPosChange(nPos); //CallBack,return false for undo
SetPos(nPos:Number);
GetPos():Number;
Destroy();
//---------------------------------------------------members
var nCurrentPos:Number;
var nStepLength:Number;
var nMax:Number;
var nSelfHeight:Number, nDragLength:Number;
var fInterval;
var bIsStartDrag:Boolean;
//----------------------------------------------------ReleatedAPI
CreateScrollBar(strParentID:String, strBarID:String, nLevel:Number, nX:Number, nY:Number);
//progressBar //ReformUI.progressBar
SetPos(Pos:Number);
GetPos():Number;
Destroy();
//---------------------------------------------------members
var nPos:Number = 0;
//----------------------------------------------------ReleatedAPI
CreateProgressBar(strParentID:String, strBarID:String, nLevel:Number, nX:Number, nY:Number);
//LoadUI.MainLogo //reformUI.LoadUI.MainLogo
OnCancel=function() //CallBack
OnRetry=function() //CallBack
SetLoadCnt(ObjCnt);
SetTitle(StrTxt:String);
ShowCancelBtn(bShow:Boolean);
SetFailedFlag(bShow:Boolean);
Destroy();
//-----------------------------------------------------ReleatedAPI
CreateLoadUI(strParentID:String, strLogoID:String, nLevel:Number, nX:Number, nY:Number,nType:Number);
//nType:0 for MainLogo
FlatButton //ReformUI.Button
SetLabel(strNewLabel:String):String;
GetLabel():String;
SetBtnSize(nWidth:Number, nHeight:Number);
Destroy();
EnableBtn(bEnable:Boolean):Boolean;
SetLabelColor(newColor:Color);
//Event
OnRollOver;OnRollOut;OnMouseDown;OnMouseUp;OnClick
//-----------------------------------------------------ReleatedAPI
CreateButton(strParentID:String, strBtnID:String, nLevel:Number, nX:Number, nY:Number);
dragbar //ReformUI.dragbar
SetWidth(nWidth:Number):Number;
UpdateUI();
SetPos(Pos:Number):Number;
GetPos():Number;
SetRange(nMin:Number,nMax:Number):Boolean;
GetMin():Number;
GetMax():Number;
//----var
Width:Number;
nPos,nMin,nMax:Number;
//----events
UpdateUI,onChange,onDrag(x,total) //use addListener
//-----------------------------------------------------ReleatedAPI
CreateDragBar(strParentID:String, strID:String, nLevel:Number, nX:Number, nY:Number);
/*
url tip define:
SubView=3&subdir...&UUID=
*/
//SiteObjs
obj:mainsite
addProxyAlignObj(objRef:Object, strAlignType:String):Boolean //strAlignType "l","r","m"
RemoveProxyAlignObj(objRef:Object):Boolean
SetWidth(nWidth:Number):Number
ParseUrlCmd(strCmd:String):Boolean
events:
broadcast:OnWidthChg(x:int);
obj:mainsite.obj_main
SetBlockWidth(size:Number):Boolean
GetBlockSize(strName:String, nID:Number):MovieClip
RemoveBlockByID(nID:Number):Boolean
RemoveBlock(objBlock:Object):Boolean
OnItemSizeChg(objBlock:Object)
GetBlockID(objBlock:Object):Number
Display(strCmd:String):Boolean //cmd:show;hide;distroy
events:
broadcast:OnHolderSizeChg(size:int);
//End of SiteObjs
var GLOBAL_nDownloadingSpeed:Number; //kb per sec
var GLOBAL_strMainSwfURL:String;
var GLOBAL_strTokenID:String;
//BAISC
parseBoolean(string:String) :Boolean
//API
//Site Config Var:
var strSiteInfo_Title:String, strSiteInfo_Version:String, strSiteInfo_LastUpdate:Date;
var bSiteConfig_UI_EnableShadow:Boolean;
var nSiteConfig_ScriptWinX:Number, nSiteConfig_ScriptWinY:Number, strSiteConfig_ScriptWinCnt:String,bSiteConfig_ScriptWinShow:Boolean;
var bSiteConfig_SndEnabled:Boolean, strSiteConfig_SndSrc:String;
var strSiteConfig_ExecScript:String;
var nSiteCnt_DefView:Number;
var nSiteCnt_ViewNum:Number;
var lstSiteView_ImgURL:Array;
var lstSiteView_ConfigURL:Array;
var lstSiteView_IsExpend:Array;
var lstSiteView_Title:Array;
var lstSiteView_TitleEn:Array;
var lstSiteView_Description:Array;
var lstSiteLink_LnkIcon:Array;
var lstSiteLink_LnkDest:Array;
var lstSiteLink_LnkType:Array;
var lstSiteLink_LnkTitle:Array;
//
_split(str);
GetRandomToken:String
CreateTween(objDestObj:Object,strEffectProperty:String,strTweenType:String,StartVal,EndVal,nDuration:Number,nFPS:Number);
GetMajorFlaVer();
GetQueryString(strURL:String,strStringName:String):String;
GetSiteInfo(strInfoType:String);
//SiteWidth;SiteHeight;SiteTitle;SiteVersion;DefSrciptTxt;LastUpdate;UI_EnableShadow
//ScriptWinIniPosX;ScriptWinIniPosY;ShowScriptWinAuto;Snd_EnableAuto;Snd_SrcURL;
//AutoExecScript;DefViewID;SiteViewTotal;lstViewIconURL;lstViewConfigURL;lstViewExpend;
//lstViewTitle;lstViewTitleEn;lstViewDescription;lstSiteLnkIcon;lstSiteLnkDest;lstSiteLnkType
//lstSiteLnkTitle
ReadSiteConfig(ConfigXML:XML);
CreateXMLPost(PostType:String);
VerifyCmdResponse(SrcXml:XML);
XML_CreateDataRequest(strDataName:String, lstInfoArg:String):XML
SolveRPCResponseXML(xmlRawDest:XML):Object
SolveRPCResponse(xmlRawDest:XML):Object
XML_CreateRPCRequest2(strRPCName:String, objArgList:Object):XML
XML_CreateRPCRequest(strRPCName:String, lstArgNameLst:Array, lstArgValLst:Array):XML
CreateXMLPost2(PostType:String):XML
CreateScriptWindow();
msgout(strMsg:String);
msgcls();
ShowScriptWindow(bShow:Boolean);
SetScriptTxt(strScriptTxt:String);
XOR_Encode(strSrc:String,strPWD:String):String;
IsScriptWindowVisible();
CallRPC(strRPCName:String, objArg:Object, funcOnResponse:Function):Boolean;
UpdateBrowseState(strBrowStr:String);
objBrowseState.strAction
objBrowseState.addListener
@Event.OnBrowCmd
//Component
ScriptWindow_core //mov_main.ScriptWindow.Cont
-------------------------------
SetScriptBuf(strNewVal:String)
ClsTxt(nClsType:Number)
// -2 clear current
// -1 clear all
//0 \ 1
PostPrint(strPrintStr:String);
SetEditorVal(strNewVal:String);
GetEditorVal():String;
GetBufVal(nBufType:Number):String;
SetPostBuf(strNewVal:String);
UpdateBuf(nBufType:Number, bSetBuf:Boolean);
Execute(strScriptStr:String);
SetView(nState:Number);
请不要用于非法用途和任何我不愿看到的行为
奋斗了4个星期,终于结束了,虽然最终EZ-UML还是有一定bug。不过相信对于一个软件工程课程大作业来说,这的确已经够了。
chris在第4周加入了我们组,随后工程量就是恐怖的增长...为了最终答辩也通宵了一次。后来ppt准备也不充分。对老师我也不想说什么,总之目前:身心疲惫。
空下来去cnBeta看了看,我不解的是:各类虚假、垄断的流氓,还有各类的黑幕,为什么会在我们这个“和谐”的社会中频发。
后来想到chris在SE答辩好对我说的话,是阿,我决定了,就目前,如果我创业,我不会选国内,如果我搞研究,我不会在国内
我自然是爱国的,但国内或许我无法适应了,也有可能是我把一些现象夸大了。不过与其被挂上不爱国的恶名,还是好些那种勾心斗角、浮夸、急功近利的氛围好。不过我也懂知恩图报的道理。
想想如果自己今后做了什么东西,也落个东方微点下场,按我的性格,我宁愿去造反。
后来去下载了这个软件,说真的,如果我非要用防毒软件的话,我就用这个了
好了,不说丧气话了,最后发些EZ-UML的图片。EZ-UML今后会不断开发,等一些明显bug修正了我会放出一些下载链接。各位Teammate辛苦了,我们先“突然”休息个礼拜吧
-------------------------------------------
增加了Workspace视图,可以拖动元件,产生分层包图或者InnerClass的结构UseCase视图
支持文字、图形反锯齿显示
编辑类属性的画面
按照即将公布的《互联网等信息网络传播视听节目管理办法》(“39号令”)规定:
从事信息网络传播视听节目业务,应取得《信息网络传播视听节目许可证》”
利用一切视音频摄制设备“拍摄、录制的,由可连续运动的图像或可连续收听的声音组成的视音频节目”,均属广电总局监管范围之列。
按照上述定义,很不幸的,Flash这个“由可连续运动的图像或可连续收听的声音组成的视音频节目”看来也会成为监管之列,必须要办理许可证,否则“由县级以上广播电视行政部门责令停止违法活动、给予警告、限期整改,可以并处三万元以下的罚款:构成犯罪的,依法追究刑事责任.”
我想也不指望去办理什么许可证了,也没心思,各位有Flash页面的站长也注意了阿,今后放超过一祯的flash是违法行为!!
看来Flash网站要放弃开发了,今后的网站将用N多的png图片来模拟Flash的效果~
-----------------------
此文将在1周后删除
呵呵,我也来做点名游戏~呵呵,这个blog最近也被技术的东西冲多了,偶尔调剂一下^_^
旷野无霜:已经有人点你了,所以就算了:-P其他的人自觉些哦,呆呆等你回来再说吧~
Somnia, 呵呵,我更喜欢叫他阿呆。我表弟。最近喜欢玩电子乐梦幻天子,室友,比较有趣的一个人^_^。呆呆,其实我不明白为什么给自己取名呆呆...现在还在德国,虽然到大学才认识,不过原来就是同乡的...Tony.Huang,第一次在协会招收会员时认识,很有想法也很有激情的一个人,平时也很谈得来M4_LOKI,室友,动慢迷一个,上学期成员漫协部长,还在taobao上开了个小店