Tiny实例:TINY框架官网制作过程详解

新增加war包下载地址,呵呵愿意体验的可以直接下载并发布到容器即可试用,也可以查看里面的内容。

由于只花了两天时间制作,一天时间搞页面,一天时间搞内容,所以还非常粗糙,还有许多需要完善的地方,欢迎同学们提出改进和完善意见,但是今天网站做的好不好不是重点,重点讲讲网站是怎么做出来的。当然了,不用问,必须用Tiny框架来做,所以今天就来讲一下如何利用Tiny框架来高速有效的进行网站开发。

网站模板选择

首先声明,本人是美工盲,前台界面盲,JS盲。所以,指望自己弄个漂亮的网站出来那是根本没有可能的。好在现在互联网发达,只要用心找就是可以找得到的。想想准备用bootstrap方式的响应式网页方式,于是就找到了themeforest.net,然后就在其主题世界荡漾,最后感觉Perfetto网站效果不错,是我想要的效果,再查看一下源文件,发现比较简单,比较容易搞定。于是就想着就是它了。

于是从http://www.angelomazzilli.com/Perfetto/index.html上把源文件搞下来,呵呵,第一手资料就算有了。由于这个不是重点,所以就快速过掉,总之,我拿到了这个网站的html,js,css,图片等等一应资源,在本地目录中打开文件访问也正确,OK,可以进入下一步骤。

宏提取

所谓宏提取,就是把网页里重复出现的东东搞成个宏,这样就避免了重复内容到处复制来复制去:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

#macro (a $aHref $title $aTarget )

<a#if($title) title="$title"#end#if($aHref)

              href="#if($aHref.startWith('/'))#if($TINY_CONTEXT_PATH.equals("/"))#else{TINY_CONTEXT_PATH}#end$#end$aHref"#end#if($aTarget)

              target="$aTarget"#end>

    $bodyContent

</a>

#end

 

#macro (img $imgHref $imgTitle)

        <img#if($imgTitle) alt="$imgTitle"#end#if($imgHref)

                           src="#if($imgHref.startWith('/'))#if($TINY_CONTEXT_PATH.equals("/"))#else{TINY_CONTEXT_PATH}#end$#end$imgHref"#end#>

</a>

#end

 

#macro(section)

<div class="section">

    $bodyContent

</div>

#end

 

#macro(container)

<div class="container">

    $bodyContent

</div>

#end

 

#macro(row)

<div class="row">

    $bodyContent

</div>

#end

 

#macro(span1)

<div class="span1">

    $bodyContent

</div>

#end

 

#macro(span2)

<div class="span2">

    $bodyContent

</div>

#end

 

#macro(span3)

<div class="span3">

    $bodyContent

</div>

#end

 

#macro(span4)

<div class="span4">

    $bodyContent

</div>

#end

 

#macro(span5)

<div class="span5">

    $bodyContent

</div>

#end

 

 

#macro(span6)

<div class="span6">

    $bodyContent

</div>

#end

 

#macro(span7)

<div class="span7">

    $bodyContent

</div>

#end

 

#macro(span8)

<div class="span8">

    $bodyContent

</div>

#end

 

#macro(span9)

<div class="span9">

    $bodyContent

</div>

#end

 

#macro(span10)

<div class="span10">

    $bodyContent

</div>

#end

 

#macro(span11)

<div class="span11">

    $bodyContent

</div>

#end

 

#macro(span12)

<div class="span12">

    $bodyContent

</div>

#end

 

#macro(hr)

<hr/>

#end

 

#macro(dropdownMenu $dropdownTitle $dropdownHref $dropdownSubTitle )

<li class="dropdown"><a href="$dropdownHref?activePage=$!menuKey">$dropdownTitle</a> <b class="caret"></b>

    <span>$dropdownSubTitle</span>

    $!bodyContent

</li>

#end

 

#macro(menu $menuTitle $menuHref $menuSubTitle  $menuKey)

<li class="dropdown#if($menuKey==$activePage) active#end"><a

        href="${menuHref}">$menuTitle</a>

    <span>$menuSubTitle</span>

    $!bodyContent

</li>

#end

 

#macro(nav)

<ul class="nav">

    $bodyContent

</ul>

#end

 

#macro(subMenu)

<ul>

    $bodyContent

</ul>

#end

 

#macro(subMenuItem  $title $href $menuKey)

<li><a href="$href"#if($menuKey==$activePage) class="current"#end >$title</a></li>

#end

 

#macro(pageTitle $title $page)

    #set($pageTitle="$title")

    #set($activePage="$page")

#end

 

#macro(modalFooter)

<div class="modal-footer">

    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>

</div>

#end

 

#macro(breadcrumb)

<ul class="breadcrumb">

    $bodyContent

</ul>

#end

 

#macro(breadcrumbParentItem $title $url)

<li>#@a($url $title)$title#end <span class="divider">/</span></li>

#end

 

#macro(breadcrumbItem $title)

<li class="active">$title</li>

#end

 

#macro(thumbnails $thumbnailsId)

<ul class="thumbnails"#if($thumbnailsId)id="$thumbnailsId"#end>

    $bodyContent

</ul>

#end

 

#macro(filterContainer)

<ul id="portfolio" class="thumbnails ">

    $bodyContent

</ul>

#end

 

#macro(filterContainerItem $column $type)

<li class="span$column $type" style="opacity: 1;">

    <div class="thumbnail" style="text-align:left;">

            $bodyContent

    </div>

</li>

#end

 

#macro(clearfix)

<div class="clearfix"></div>

#end

 

#macro(thumbnailsItem $name $title $qq $email $imgUrl)

<li class="span3">

    <div class="thumbnail">

        #img($imgUrl)

        <div class="caption">

            <h3><a href="#">$name</a></h3>

            <em>$title</em>

 

            <p>QQ:$!qq</p>

 

            <p>邮箱:$!email</p>

            #clearfix

            $!bodyContent

        </div>

    </div>

</li>

#end

 

#macro(slides)

<div class="slides">

    $bodyContent

</div>

#end

 

#macro(slidesItem $imgSrc $title $href)

<div>#@a($href $title)#img($imgSrc $title) #end

$bodyContent

</div>

#end

 

#macro(slidesDetail)

<div class="detail">

    $bodyContent

</div>

#end

 

#macro(slidesDetailInfo $title $subTitle)

<h3>#@a($href $title)$title#end</h3>

<em>$subTitle</em>

    $bodyContent

#end

 

#macro(title $title $subTitle)

<div class="row">

    <div class="span12">

        <h1 class="no-margin">$title</h1>

 

        <p class="lead">$subTitle</p>

    </div>

</div>

#end

 

#macro(wideBanner)

<!-- Wide Banner -->

<div class="wide-bg">

    <div class="container">

        $bodyContent

    </div>

</div>

#end

 

#macro(sidebar $title)

<!-- Sidebar -->

<div class="span3 sidebar">

    #if($title)

        <h3 class="half-margin">$!title</h3>

    #end

    <ul class="nav nav-tabs nav-stacked">

        $bodyContent

    </ul>

</div>

#end

 

#macro(sidebarItem $title $href )

<li>#@a($href $title)$title#end</li>

#end

 

#macro(lead $id $title)

<p class="lead no-margin" id="$id">$title</p>

<div class="">

    $bodyContent

</div>

<hr class="no-margin" style="margin: 5pt;5pt;5pt;5pt;"/>

#end

 

#macro(filter)

<!-- Portfolio Filter -->

<div id="filter" class="half-margin">

    $bodyContent

</div>

<div class="clearfix"></div>

</div>

#end

 

#macro(filterItem $title $current)

<button class="btn btn-small half-margin#if($current) current#end">$title</button>

#end

 

#macro(shortcut $title $href $icon)

    #@a($href $title "_blank")#img($icon)#end

#end

 

#macro(caption $title)

<div class="head" style="text-align: left;">

    <h3><strong>$title</strong></h3>

    $bodyContent

</div>

#end

 

#macro(masonry)

<div id="masonry">

    $bodyContent

</div>

#end

#macro(masonryItem $masonryItemClass)

<div class="single $masonryItemClass">

    $bodyContent

</div>

#end

 

#macro(logo)

<p class="logo"><a href="home.page"><span>Tiny Framework</span></a></p>

#end

 

#macro(toTop)

<div id="toTop">Top</div>

#end

通用的宏已经写好,接下来就是写与网站有关部分的宏:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

#macro(header)

<!-- Header -->

    #@row()

        #@span3()

        #logo

        #end

        #@span9()

        <div class="top-header text-right"><em>QQ群: <em>228977971</em> 邮箱:<a

                href="mailto:luo_guo@icloud.com">luo_guo@icloud.com</a></em>

 

            <div class="social">

                #shortcut("Sonar代码检查" "http://www.tinygroup.org/sonar/dashboard/index/org.tinygroup:tiny" "img/sonar.ico")

                #shortcut("Hudson持续集成" "http://www.tinygroup.org/hudson/job/tiny/" "img/hudson.png")

                #shortcut("TinyFramework OSC首页" "http://www.tinygroup.org/sonar/dashboard/index/org.tinygroup:tiny" "img/osc.ico")

                #shortcut("TinyFramework GIT网址" "http://git.oschina.net/tinyframework/tiny" "img/git.ico")

            </div>

        </div>

        <div class="text-left">

            <h2></bit> Think big, start small, scale fast.</h2>

        </div>

        #end

    #end

#end

 

#macro(footer)

    #@section()

        #@container()

        <!-- Footer -->

            #@row()

                #@span12()

                <div class="footer">

                    <hr/>

                    <p class="text-center">&copy;Copy Right 2009~2014 <strong>tiny group</strong><br/>

                        www.tinygroup.org</p>

                </div>

                #end

            #end

        #end

    #end

 

#end

 

#macro(navbar)

<!-- Navbar -->

<div class="navbar"#* id="nav-follow"*#>

    <div class="navbar-inner">

        <div class="container"><a data-target=".navbar-responsive-collapse" data-toggle="collapse"

                                  class="btn btn-navbar"><i class="icon-th-list"></i></a> <a

                data-target=".navbar-responsive-collapse" data-toggle="collapse" class="brand">Navbar</a>

 

            <div class="nav-collapse collapse navbar-responsive-collapse">

                #@nav()

                    #@menu("Homepage" "home.page" "首页" "home")#end

                    #@menu("philosophy" "philosophy.page" "设计理念" "philosophy")#end

                    #@menu("principle" "principle.page" "设计原则" "principle")#end

                    #@menu("Features" "feature.page" "功能特性" "feature")#end

                    #@menu("FAQ" "faq.page" "常见问题解答" "faq")#end

                    #@menu("encourage us" "encourage.page" "鼓励我们" "encourage")#end

                    #@menu("About us" "about.page" "关于我们" "about")#end

                #end

            </div>

        </div>

    </div>

</div>

#end

上面就把宏处理方面的工作处理完毕了,接下来就是设定页面结构了。

页面结构设计

Html页面结构

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

        "http://www.w3.org/TR/html4/strict.dtd">

<!--[if IE 7 ]>        <html class="no-js ie ie7 lte7 lte8 lte9" lang="en-US"> <![endif]-->

<!--[if IE 8 ]>        <html class="no-js ie ie8 lte8 lte9" lang="en-US"> <![endif]-->

<!--[if IE 9 ]>        <html class="no-js ie ie9 lte9>" lang="en-US"> <![endif]-->

<!--[if (gt IE 9)|!(IE)]><!-->

<html class="no-js" lang="en-US"> <!--<![endif]-->

<html lang="en">

<head>

    <meta charset="utf-8"/>

    <link rel="shortcut icon" href="${TINY_CONTEXT_PATH}/tinysite/img/tiny.png" type="image/x-icon"/>

    <title>Tiny Framework-$!pageTitle</title>

    <meta name="description" content="Tiny Framework 是基于Java语言的面向组件的企业级开发框架。"/>

    <meta name="keywords" content="Tiny,Framework,Java,SOA,框架,组件,分层,水平扩展,分区,分表,分布式计算,VFS,Web" />

    <script src="${TINY_CONTEXT_PATH}/uiengine.uijs"></script>

    <link href="${TINY_CONTEXT_PATH}/uiengine.uicss" rel="stylesheet" />

</head>

<body class="boxed"  style="background: url(${TINY_CONTEXT_PATH}/tinysite/img/bg/parquet-bg.jpg);">

$pageContent

</body>

</html>

网站页面结构:

?


1

2

3

4

5

6

7

8

9

10

11

12

#@section()

    #@container()

    #header

    #navbar

    #hr

    #end

    #@container()

        $pageContent

    #end

#end

#footer

#toTop

上面的页面结构就非常清晰了:

下面详细解释:

?


1

2

3

4

5

6

7

8

9

10

11

12

#@section()##开一段

    #@container()##开一个容器

    #header##放header进去

    #navbar##放导航条进去

    #hr##放一个分隔线

    #end

    #@container()##再开一个容器

        $pageContent##里面放展现的内容

    #end

#end

#footer ##这里放页脚

#toTop  ##这里放返回页顶按钮

是不是非常清晰呀?

然后就是每一页的内容编写了。

页面编写

首页

在需要解释的行的后面我会增加注释

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

#pageTitle("首页" "home")##设定这一面展现时的标题是”首页“,并且置"home"菜单为选中状态<span></span> #title("Tiny framework" "基于组件化的J2EE开发框架")

 

#@slides()##轮播

    #@slidesItem("img/example-slide-1.jpg" "Photo" "#")##第一个轮播项

        #@slidesDetail()

            #@slidesDetailInfo("名字" "Tiny名称的来历")##轮播中的详细解释段

            <p>取名Tiny是取其微不足道,微小之意。</p>

            <p>Tiny的构建者认为,一个J2EE开发框架是非常复杂的,只有把框架分解成非常细小、可控的部分,并且对每个细小、可控的部分都有一个最优解或相对最优解,

            那么整个方案也就可以非常不错的落地。</p>

            #end

        #end

    #end

    #@slidesItem("img/example-slide-2.jpg" "Photo" "#")

        #@slidesDetail()

            #@slidesDetailInfo("策略" "Tiny框架的构建策略")

            <p>Think big, start small, scale fast.</p>

            <p>想法要宏伟,但是要从小的开始,同时可以快速的进行扩展。</p>

            <p>Tiny框架的构建者认为:如果想法不够宏伟,那么就会局限于细节;如果一开始就铺非常大的摊子,将会失去控制;如果不能快速扩展,就无法满足应用需要。</p>

            #end

        #end

    #end

    #@slidesItem("img/example-slide-3.jpg" "Photo" "#")

        #@slidesDetail()

            #@slidesDetailInfo("定位" "Tiny框架的应用定位")

            <p>基于WEB的展现平台</p>

            <p>主要包括展现层及控制层,可以让开发人员方便快速的实现WEB层的开发,同时要避免现有方案的缺点,同时要有自己非常突出的优点。</p>

            <p>基于SOA的服务开发平台</p>

            <p>可以方便的开发平台无关的服务,同时有水平扩展,应用集群方面要有良好的支持,可以满足7*24的运维要求。</p>

            #end

        #end

    #end

    #@slidesItem("img/example-slide-4.jpg" "Photo" "#")

        #@slidesDetail()

            #@slidesDetailInfo("目标" "Tiny框架的目标定位")

            <p>Tiny框架的构建者认为再好的框架也有过时的时候,再优秀的架构师也有视野盲区,再NB的写手也无法实现所有的部分。</p>

            <p>所以Tiny框架的构建者认为:只有建立一个良好的生态圈,让广大开发者使用者都在生态圈在找到自己的位置,才是有生命的模式。</p>

            #end

        #end

    #end

#end

可以看到上面的内容语法结构非常清晰,容易理解,容易修改。

设计理念

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#pageTitle("philosophy" "philosophy")

#title("philosophy" "主要介绍Tiny框架的设计理念")

 

 

#@row()

    #@masonry()

    <!-- Content -->

        #@masonryItem()

            #@caption("使用灵活")

            <p>可以整个使用它,也可以只用它的一个或几个部分。</p>

            <p>Tiny构建者认为,一个完整的框架可能需要有许许多多个部分组成,但是对于实际应用的用户来说,它可能只需要其中的一部分功能。构架一定要有这种能力,可以由使用者进行点菜式,使用,避免只要用一点点功能,就要引入许许多多的内容。</p>

            #end

        #end

 

        #@masonryItem("big")

            #@caption("学习成本低、上手容易")

            <p>框架的学习成本必须非常低,这样才可以让使用者更容易上手,避免由于学习难度大而导致的学习曲线太陡、太长。</p>

            <p>经过许多次的实践,我们总结出来:有基础的JAVA开发人员经过半天的培训,就可以完全学会基于Tiny框架进行开发,经过1天到两天的实践就会变成熟手。</p>

            <p>对框架进行扩展或基于框架扩展接口进行扩展,则需要3天左右的培训,就可以完全掌握,经过一周的实践就会变成熟手。</p>

            #end

        #end

 

         ##后面的内容都类似就不贴了

    #end

#end

鼓励与支持

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#pageTitle("鼓励" "encourage")

#title("encourage" "鼓励与支持")

#@row()

    #@span3()

    #end

    #@span6()

    <div class="thumbnail" style="text-align: left;">

            <p>我想每一个访问到这个页面的人,一定也是同样对技术有所追求的人。相对于金钱来说,我们更需要您的支持、鼓励,以及对我们所做工作的认可。</p>

            <p>我们不希望收到多少金钱,但是我们希望收获许多支持。</p>

            <p>如果您感受得到我们的努力及付出,请不辞辛苦为我们捐赠<em style="color:red"><strong>一块钱</strong></em>,为我们加油,为我们助威!</p>

            <p><em style="color:red">请用支付宝中的二维码扫描功能扫描下面的二维码</em></p>

        #img("img/appxl1rc0koh8fj044.png")

    </div>

    #end

    #@span3()

    #end

#end

其它页面也大同小异,这里就不贴了。

运行结果

更多页面,请看网站www.tinygroup.org

增加google及Baidu站点统计

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

        "http://www.w3.org/TR/html4/strict.dtd">

<!--[if IE 7 ]>        <html class="no-js ie ie7 lte7 lte8 lte9" lang="en-US"> <![endif]-->

<!--[if IE 8 ]>        <html class="no-js ie ie8 lte8 lte9" lang="en-US"> <![endif]-->

<!--[if IE 9 ]>        <html class="no-js ie ie9 lte9>" lang="en-US"> <![endif]-->

<!--[if (gt IE 9)|!(IE)]><!-->

<html class="no-js" lang="en-US"> <!--<![endif]-->

<html lang="en">

<head>

    <meta charset="utf-8"/>

    <link rel="shortcut icon" href="${TINY_CONTEXT_PATH}/tinysite/img/tiny.png" type="image/x-icon"/>

    <title>Tiny Framework-$!pageTitle</title>

    <meta name="description" content="Tiny Framework 是基于Java语言的面向组件的企业级开发框架。"/>

    <meta name="keywords" content="Tiny,Framework,Java,SOA,框架,组件,分层,水平扩展,分区,分表,分布式计算,VFS,Web" />

    <script src="${TINY_CONTEXT_PATH}/uiengine.uijs"></script>

    <link href="${TINY_CONTEXT_PATH}/uiengine.uicss" rel="stylesheet" />

</head>

<body class="boxed"  style="background: url(${TINY_CONTEXT_PATH}/tinysite/img/bg/parquet-bg.jpg);">

$pageContent

<script type="text/javascript">

    var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");

    document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F08ed66f35813cc4b68c4607c2a40d33c' type='text/javascript'%3E%3C/script%3E"));

</script>

<script>

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 

    ga('create', 'UA-51345317-1', 'tinygroup.org');

    ga('send', 'pageview');

 

</script>

</body>

</html>

考虑要个人也比较关心一些统计数据,于是就增加一baidu及google的统计分析。

很简单,只要在根目录中的default.layout中增加这两段js就可以了,所有的其它文件都不必修改。

哇,已经可以收集数据了,同时也再一次验证了Tiny框架对于DRY原则的坚持。

总结

上面展示了Tiny框架强大的页面开发能力。

对于页面开发人员来说,进行了相当的封装,避免了直接使用html而出现不应该出现的问题。

对于开发人员来说,不必关心页面结构,也不必关系js,css相关的内容,只要设置好页面上的元素即可。

这里就可以非常清晰的看到,界面开发程序员做的事情非常简单、易懂,且易于维护。明眼人也看得非常清晰,如果数据是来自于数据库,那处理就更简单了。

时间: 2024-09-22 09:36:25

Tiny实例:TINY框架官网制作过程详解的相关文章

Android应用框架之应用启动过程详解_Android

在Android的应用框架中,ActivityManagerService是非常重要的一个组件,尽管名字叫做ActivityManagerService,但通过之前的博客介绍,我们知道,四大组件的创建都是有AMS来完成的,其实不仅是应用程序中的组件,连Android应用程序本身也是AMS负责启动的.AMS本身运行在一个独立的进程中,当系统决定要在一个新的进程中启动一个Activity或者Service时就会先启动这个进程.而AMS启动进程的过程是从startProcessLocked启动的. 1

ThinkPHP RBAC官网的例子详解

一直想学习RBAC,又看了官网的例子,又百度,没找到合适的教程.所以就只能自己研究了,就拿官网的例子来说吧 think_access表 作用是看某个组是否有权限访问某个模块下的方法或者访问某个模块,这个表少一个pid字段,自己添加就可以了 think_node表,节点表 作用是把所有需要的模块,模块下的方法都添加进来管理,用这个也可以直接读取成后台的导航 name字段是模块,方法的名称,比如Index模块,index方法等,   pid,这个模块或者方法的父id, level,级别,一般项目名是

Maya实例:模拟一碗真实的水制作过程详解

Android应用框架之应用启动过程详解

在Android的应用框架中,ActivityManagerService是非常重要的一个组件,尽管名字叫做ActivityManagerService,但通过之前的博客介绍,我们知道,四大组件的创建都是有AMS来完成的,其实不仅是应用程序中的组件,连Android应用程序本身也是AMS负责启动的.AMS本身运行在一个独立的进程中,当系统决定要在一个新的进程中启动一个Activity或者Service时就会先启动这个进程.而AMS启动进程的过程是从startProcessLocked启动的. 1

求原理,腾讯JX框架官网的开始动画,很炫

问题描述 求原理,腾讯JX框架官网的开始动画,很炫 如题,今天无意点进去了,效果很炫,链接:http://alloyteam.github.com/JX/ 在网上搜了半天,也没有解释这个的,找了半天,只有这一个人解释的 http://www.cnblogs.com/hongru/archive/2012/03/28/2420415.html 可是我主要从事后台开发,java的.前台只能做一些普通的网页,工作也没有接触前台的机会,公司前台页面专门有人做,我们只是拿来用就ok....我看了这个博客,

android上传图片到PHP的过程详解_php实例

今天在做上传头像的时候,总是提交连接超时错误,报错信息如下:XXXXXXSokcetTimeOutXXXXXXXX 然后自己设置HTTP的超时时间: 复制代码 代码如下: [java] view plaincopyprint? //设置超时时间  httpclient.setTimeout(20000);  再building,runing,还是不行....这就怪了,明明好好的,怎么会突然就变成连接超时了呢!又折腾了一阵子后,也跟后台那边的朋友沟通过,他也测试了上传接口,发现没什么问题,就让我自

.NET配置文件解析过程详解

过程|详解 在我看来,WEB project的开发与WINFORM的开发最大的区别在于web的运行是在Framework上更高一层框架上运行,即ASP.NET框架,程序员在web下的开发可以说是黑盒开发,不是让你去定义程序入口和执行顺序,而是asp.net来调用你的各个方法,程序员做的一切都是一种受控的舞蹈.就像我们调用nunit之类的工具来测试一个dll一样,nunit是容器,是框架,执行哪个方法是由nunt来决定的.因此,也就有了页面执行周期各状态等令刚入门的程序员困惑不已的事,其实,究其根

IIS8 使用FastCGI配置PHP环境支持 过程详解

原文:IIS8 使用FastCGI配置PHP环境支持 过程详解   平时帮朋友们配置过一些PHP环境的服务器,但是一直使用的都是Apache HTTP+PHP,今天呢,我吧IIS+PHP配置方式给大家发一下下~呵呵.   在这里,我使用的是FastCGI模块映射的方式配置的,当然还有ISAPI处理程序映射,不过ISAPI的方式在PHP5.5之后就没有了,FastCGI是推荐的方式,效率相对比较高也稳定. 系统我用的是自己的笔记本,Windows 8.1,IIS是8的,当然Windows Serv

基于Android实现百度地图定位过程详解_Android

一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册密钥:地址http://developer.baidu.com/map/ 2.下载定位SDK,并导入SDK如图所示:   三.编写MyApplication类 编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中 封装下列方法 1.  获取定位信息