自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 使用 SQL 的 CASE 语句做付款方式的统计

使用 SQL 的 CASE 语句做付款方式的统计

2023-02-11 11:53:49 305 1

原创 使用SQL 的CASE 语句做分时段统计

某日老板突然要求,想看各时段的订单数量。心想,订单表中有纪录时间点,这应该不成问题,只是这 SQL 语句该如何下?如果一个小时统计一次,总不能分24次吧!订单数据表 orders 如下:希望得出的结果如下:利用 CASE 语句就能完成任务。SELECT CASE WHEN DATE_FORMAT(T1.CreateTime, "%H") = 0 THEN "H00" WHEN DATE_FORMAT(T1.CreateTime, "%H") = 1 THEN "H01"

2021-03-01 16:17:05 1166

原创 单列的 FORM

利用bootstrap 的 form-inline 实作下面的样式。<form class="form-inline font5" style="margin:0px;" id="frmFind"> <input type=hidden name="MemberNo" value="<?php echo $memberNo; ?>"> <i...

2020-02-13 09:32:24 341

原创 使用 Tamir.SharpSSH 类库实现 SFTP 文件操作

前言在改一个 VB.NET 的项目,因需要将本机档案上传到云端,所以找到了 Tamir.SharpSSH 这个类库,但很多资料都是介绍如何用 C# 来实现。想把范例改成 VB.NET,但碰到无法继承的问题,或许是对 VB.NET 不熟,无法排解问题,索性把范例纳入 VB.NET 的解决方案中,让 VB.NET 透过 C# 的范例实现 SFTP 文件操作的功能。在原 VB.NET 解决方案中添...

2019-12-11 15:27:32 2751

原创 Pygame实作GUI(04)MyBaseForm 类

前言前三篇介绍了 GUI 中的 Label, Button, Checkbox, Radio Button 等控件,基本上这些控件都是摆放在屏幕上的某个位置,要有显示及判断 click 事件的管理机制。每一个画面都会有,所以要设计成一个类来管理,因此设计了 MyBaseForm 类。MyBaseForm 类建构函式如下:class MyBaseForm(object): def _...

2019-10-02 13:12:46 295

原创 Pygame实作GUI(03)检查方块

前言检查方块(checkbox)在操作上与按钮相似,只是其选择状态并非短暂的。检查方块可以被认为是个触发开关,但当它被 clicked 时,它就会改变选择或未选择状态。如下图,「记住密码」与「自动登录」就使用了的检查方块。检查方块除了左边的图案之外,也有与之联系的文字描述,所以右边的文字也是检查方块的一部分。检查方块可以是单独出现或以 exclusive groups形式出现。一个单独出现...

2019-09-29 13:47:30 436

原创 Pygame实作GUI(02)Button

前言按钮(Button)是GUI中最简单的一种控件,由一个矩形区域组成,有两个状态:作用中、非作用中。两种状态表示可以点击或无法点击。按钮可以用图案表示,也可以使用文字,当然图案加文字也是可以的。因此大概知道一个Button 应该有一个代表底图的 surface 对象,以及一个显示文字的 Label 控件。在 GUI 中除了 Button 控件,还有单选钮(RadioButton)、复选钮(...

2019-09-28 13:18:25 7675

原创 Pygame 实作 GUI(01)Label

前言GUI ( Graphical User Interface ) 中文称之为『图形用户界面』。在Python 中,虽有默认的 UI 工具包 Tkinter,但如何与 pygame 融合使用?却不是简单易解的事。游戏中的用户界面,除了中文输入外,其他的部份用 pygame 来实作并非难事。既然易用的轮子难寻,索性就自己建造属于自己的 GUI 系统。显示文字在 pygame 中要显示文字,...

2019-09-21 13:02:28 3380

原创 Python 3 入门手札(15)threading 多线程模块

在 Python 中使用多线程只要用 threading 模块就能达成,建立一个线程的方法是用 threading.Thread() 类别来建立一个线程对象:import threadingt = threading.Thread(target=函式名称, args = (参数,))如果要执行的函式需传入参数的话,必须放在 threading.Thread() 里的 args 参数之中,而...

2019-08-18 16:59:27 143

原创 Python 3 入门手札(14)档案存取

Python 内建的 open() 函式可用来开启档案,它会传回一个档案对象,然后我们即可用档案对象的 read(), close() 等方法来操作档案。例如:f = open(‘a.txt’) # 以读取模式开启 a.txt 文件并传回一个档案对象data = f.read() # 读取档案内容f.close() # 关闭档案开启档案时的参数设定...

2019-08-05 10:48:49 301

原创 Python 3 入门手札(13)import 模块

Import 会将 python 代码从另一个文件中转移到当前的程序中。这些代码包括变量、函式、类别、模块及套件。模块(module)模块基本上就是一般的程序文件(.py)。在模块中可以定义各种变量、函式或类别。例如,我们自己写了很多函式,就可以将之储存到模块中,等需要时再汇入使用。套件(package)如果功能较多或较复杂,则可以将之分门别类储存到多个模块中,然后将这些模块存放在一个文件...

2019-07-27 11:27:04 246

原创 Python 3 入门手札(12)对象与类别

对象与类的三大特点:对象(object)是由类(class)产生的。类规划了对象的数据储存方式,这些储存的数据就称为对象的属性。类规划了对象的操作方式,这些操作方式就称为对象的方法。基本上类就像是对象的设计蓝图,有了类(蓝图)就可以用它来产生或建立对象。同一个类所产生的对象都具有相同的属性及操作方式,就像是同一个模子(蓝图)印出来的。例如,车厂设计好一车型的蓝图(类),然后...

2019-07-21 11:53:15 126

原创 Python 3 入门手札(11)函式 Function

使用变量的理由是为了要重复使用同一份数据,同样的,使用函式(Function)的理由是为了要重复使用一段程序。我们可以将需要重复使用的程序片段赋予一个函式名称,然后像变量一样,呼叫这个函式名称来重复使用这个程序片段。设计自己的函式定义函式要使用 def,语法如下:def 函式名称(参数1, 参数2, …): 程序区块函式名称的命名规则就跟变量一样,其中参数可以有多个,也可以无参...

2019-07-16 16:26:51 202

原创 Python 3 入门手札(10)异常处理

Python 一开始执行程序时,会先全面检查语法,如果语法错误,就会停止执行,此时必须修正语法,然后重新执行。如果语法没有错误,但在执行过程中发生系统无法处理的错误,此时系统会产生一个异常(Exception),如果此异常没有被处理,那么就会一层层往上送给呼叫它的程序,直到有程序出面处理为止。如果送到最上层都没有被处理,那么就会终止程序的执行并显示错误讯息。例如:为了避免程序因发生异常而被终止...

2019-07-14 09:59:11 133

原创 Python 3 入门手札(09)循环 while 及 for

如果需要重复执行某项工作,可用 while 或 for 循环来进行。其中 while 循环可依照条件来重复执行。而 for 循环则专门用来走访容器中的元素。While 循环语法如下:while 条件式 :程序区块n = int(input('请输入一个正整数:'))k = nwhile n > 1 : n = n – 1 k = k * nprint(k)...

2019-07-10 16:58:35 196

原创 Python 3 入门手札(08)if 判断式

If 判断式可以在程序中做「如果…就…」的判断,写法如下:if a < 1: # if 判断式,判断 a 是否小于 1 a += 1 # 右缩区块,表 a < 1 时,才会执行。 b = a + 3print(b) # 未缩排,不属于 if 区块。属于 if 的程序区块要「以 4 个空格向右缩排」,表示它们是属于上一行的区...

2019-07-07 10:31:27 254

原创 Python 3 入门手札(07)多重指定与自动解包、打包

多重指定可以让我们一次指定多个变量,例如:x, y, z = 1, 2, 3在等号右边的数据列,其实就是一个没加小括号的 tuple。凡是在需要多个值的场合,tuple 会自动解包(tuple unpacking),然后将元素一一指定给对应的变量。此时等号两边的项目数量必须相同才行,否则会产生错误。等号的两边都可以是容器只要是可读取元素的容器,都可以自动解包。甚至等号的左边也可以是有顺序...

2019-07-03 17:47:46 197

原创 Python 3 入门手札(06)字符串 String

字符串(string)也是一种有顺序的「序列容器」,因此操作方法也和 List 很类似,不过和 tuple 一样,其元素是不能改变的。同样有索引和切片的功能,例如:s=’0123456’Python 没有「字符」类型,所以都是以〝只有一个字的字符串〞来表示。在算符部分,+(串接)、*(重复 n 次)、in (包含于)及 not in 都可以使用。在比较算符 >, ...

2019-06-29 11:10:51 217

原创 Python 3 入门手札(05)在结构体中存储值 — dict

dict : 字典Dict(字典)跟 set(集合)很像,其差别在于 dict 中的元素是以「键 : 值」成对的方式来储存,方便我们用键(key)来查询对应的值。字典中的键必须是唯一的,但值可以重复。字典是以大括号 {key1 : value1, key2 : value2, …} 来标示。如果要建立空字典,可以用空的大括号 { } 或是不加参数的 dict()。字典...

2019-06-22 12:02:02 490

原创 Python 3 入门手札(04)在结构体中存储值 — Set

Set:集合如果说 list 是「一串数据」,那么 set(集合)就是「一堆数据」。一串数据是有顺序性的,例如:〝甲〞、〝乙〞、〝丙〞…依序排列,而一堆数据则是随机摆放,没有固定顺序。Set 要用大括号 {x, y, z } 来标示。Set 的元素必须是唯一而不可重复的,如果加入重复的数据则会被合并。除了使用 { } 来建立 set 之外,也可以用 set() 函式取用其他...

2019-06-17 11:33:38 388

原创 Python 3 入门手札(03)在结构体中存储值 — Tuple

Tuple:元组Tuple 和 List 完全一样,除了其中的元素是不可更改的。Tuple 要用小括号 (x, y, z) 来标示。要建立空的 tuple,可用 () 或是不加参数的 tuple()。Tuple 虽然是用 () 来标示,但要用索引取其中的元素时,仍然要用方括号 [],若用小括号 () 会变成呼叫函式,例如:grade[0] 是 grade 的第一个元素,而 ...

2019-06-15 10:46:24 218

原创 Python 3 入门手札(02)在结构体中存储值 — List

除了简单的数据类型,Python 还允许我们将数据用不同方式组合起来创建结构体。最简单的结构体是线性结构体(sequences),它将信息一个接一个地存储起来,它分有两类:lists(列表)和tuples(元组)。另外也有非线性结构体,如:dict(字典)和 set(集合)。结构体可以视为一种容器,内部所装的数据称为元素(element)。List:列表List 要用方括号 [x, y,...

2019-06-09 15:36:15 702

原创 Python 3 入门手札(01)基础

指令在程序中英文大、小写是不同的。Python 程序事由一堆指令所指成的,通常一个指令就是一行,而且要由一行的最前面开始写起,若在指令的前面加上空白会变成程序的区块。在指令的内部,则可以在符号的前后视需要加入空白,以便增加美观或可读性。例如:print(2**3) # 未加空格,感觉有点挤!print(2 ** 3) # 在 ** 的前后加上空格,感觉是否比较...

2019-06-03 14:25:03 208

原创 Unity 2D 学习手札(十三)Touch 的应用

前言简单的范例如下,按住某张牌,往上拉约一张牌的高度,代表打出该张牌。麻将牌游戏对象新增一个 Sprite 对象,用于显示麻将牌内容,命名为〝aTile〞。然后为其添加一个 Box 碰撞器。添加方式如下:并为此对象添加一个脚本 Tile.cs。完整程序代码如下:using UnityEngine;public class Tile : MonoBehaviour { pub...

2019-03-28 11:51:45 414

原创 Unity 2D 学习手札(十二)Sprite 的触点处理

前言一个简单的范例,如下图的朴克牌,点一下就会翻过来,再点一次就盖起来。朴克牌游戏对象首先新增一个 Sprite 对象,用于显示朴克牌的点数,命名为 oneCard。然后在其下新增一个 Sprite 子对象,用于显示背面图像,命名为 imgBack。由于 oneCard 要判断是否被点击,所以得添加一个Box 碰撞器。添加方式如下:最后为此对象挂上一个脚本 Card.cs。完整的程...

2019-03-17 17:06:22 634

原创 Unity 2D 学习手札(十一)Input Field控件

前言Input Field 控件是 UGUI 中的文本输入控件。在移动设备上使用时,当使用者点击到该控件时,就会弹出用于输入的键盘。简单的范例,如上图,一个简单的输入框,左边有个提示 ICON,未输入任何文字时,会有默认的文字提示。底图制作首先制作一张带有图示的底图,如下图,大小为 400 x 50 像素,图示部分宽 48 像素。创建输入框控件点〝GameObject → UI...

2019-02-12 17:31:29 1388

原创 Unity 2D 学习手札(十)JSON数据的应用

前言如上图所示的选单,每一关都要显示过关的成绩,表面上看到的只有几颗星星,实际上是记录着答对题数、答错题数及使用时间。开始规划首先设计一个序列化的数据类别,命名为 ScoreInfo 用来储存单一关卡的纪录。代码如下:using UnityEngine;using System;[Serializable]public class ScoreInfo{ public i...

2019-02-05 15:39:31 285

原创 Unity 2D 学习手札(九)游戏数据的本地存取

前言游戏中的数据基本上都是暂时保存在内存中,一旦离开,数据就会消失。有些数据是游戏本身设定的,不会跟着游戏的进行而有所变化。但有些数据是根据玩家的进度而有所不同的,例如,目前所处的关卡、位置、得分等等。这些数据必须保存,下次再进入游戏时,才不会又得从头再来。保存的方式有很多种,在此示范本地二进制序列化的方式。什么叫序列化?简言之,就是将游戏对象以未处理过的二进制形式写入储存装置中。回顾《...

2019-01-28 16:26:18 601

原创 Unity 2D 学习手札(八)Sprite 人物的走动

前言想让一个人物能在画面上依指示向四个方向(上、下、左、右)走动,如下图:图檔制作为了能上下左右的走动,必须先准备四个方向的动画。下图来自FeralFantom’s Entry。这是一张 576 x 256 像素的图,把它导入项目的 Assets/Resources/man 中,然后用 Sprite Editor 切成每张 64 x 64 像素的图片。每个方向有九张,一共有 36 ...

2019-01-19 18:20:37 1981

原创 Unity 2D 学习手札(七)Sprite 背景的移动

简单的范例如上图,后面的蓝天白云及前面的建筑物会依据各自不同的速率左右移动。图片准备准备两张图,如下图,BG0003 的尺寸是 1536 x 768 像素,BG0004 为 3072 x 768 像素。屏幕大小设为 1024 x 768像素,因为 Pixels to Units 维持默认值的 100,所以 Main Camera 的 Size 设为 3.84。原理由于是左右移动,所...

2019-01-15 17:32:44 1118

原创 Unity 2D 学习手札(六)Sprite 动画

简单的范例如上图,在等待使用者作答时,播放左右晃头的等待动画,使用者作答时,判断答对或答错,分别播放不同的动画及音效。播放完毕,继续左右晃头。图片制作左右晃头要准备三个状态的图,分别为摆左、正中及摆右,但播放时要依正中 → 摆左 → 正中 → 摆右 → 正中 → 摆左→ 正中→…的顺序播放,感觉才自然。可以三张图分别存檔,也可以合成一张。若是合成一张图,那么就得在 Unity 中分割。...

2019-01-13 16:08:54 2386

原创 Unity 2D 学习手札(五)Button 控件

在游戏中,按钮通常会用图案来呈现,有四种状态:一般 (Normal)、突出显示 (Highlight)、按下 (Pressed) 及禁用 (Disable)。把图檔准备好后,就可开始制作了。1. 创建按钮在 UGUI 中执行〝GameObject → UI → Button〞命令,就可以创建一个 Button 控件。创建出来的 Button 控件中包含了一个 Text 子对象,用于显示 B...

2019-01-12 18:11:48 3385

原创 Unity 2D 学习手札(四) RectTransform 组件

UGUI 中每个控件包括 Canvas 都会带一个 RectTransform 组件,如下图,该组件继承自 Transform,用于控制 UI 元素的 Transform 信息。组件中的 Rotation, Scale 代表着旋转及缩放,不难理解,但 Anchors 及 Pivot 会因不同的组合而有所变化。什么是 Pivot ?Pivot 这个属性,可称为基准点,或称为坐标系中的原点。...

2019-01-09 16:04:00 554

原创 Unity 2D 学习手札(三) 不同场景间的资料存取

单一场景( Scene )的数据的存取,在相对应的脚本( Script )中定义成员变量即可,但仅限于此场景中,并不能将这些变量传递到另一个场景。为了解决不同场景之间数据的传递,以下提供两种解决的方法:一、使用 PlayerPrefs 类PlayerPrefs 类是 Unity 3D 提供的一个用于本地持久保存与读取的类。以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出所保存的...

2019-01-06 18:56:04 2813 4

原创 Unity 2D 学习手札 (二) 声音的简单播放

建立音频文件 Audio Clip因为会用到 Resources.Load(),所以要在 Assets 下建立一个名为 Resources 的文件夹。在 Resources 下建立一个存放音频文件的文件夹,例如:Sound。利用 Import New Asset 选取所要导入的音频文件。建立音频源 Audio Sources音频源就像是一个声音的播放器,用来控制声音的播放。建立的步...

2018-12-18 23:42:16 858

原创 微信小程序 — 九宫格

效果图如下: 网络上有几种作法,在此我采用了〝学而时习之〞所提供的做法。其作法很简单,就是将所有格子内容用 wx:for 逐一呈现,然后利用 css 控制格子大小,且宽度不足时会自动换行的特性,达到九宫格的显示效果。在 menu.wxml 中布置如下代码: &amp;lt;view class=&quot;grids&quot;&amp;gt; &amp;lt;view class=&quot;grids-cell&quot;

2018-06-25 16:15:14 5642 5

原创 微信小程序 — 标签导航设计

标签页要在 app.json 中设定 tabBar 配置项,有几个属性可以更改其外观,其中最主要的是 list,Array类型,在此指定标签页,另外,position 可指定卷标导航的位置是在底部 (bottom) 或上面 (top),默认值为 bottom。标签导航页最多5个,最少2个,标签页按数组的顺序排列。每个页签要设定: pagePath : 页面的路径,就是切换后要执行哪个 P...

2018-06-25 10:53:39 810

原创 PHP 数据库读写操作的设计 (三)

数据库读取操作类的设计虽然有了 DBHelper 类可以简化数据库读写操作的工作,然而一堆的 SQL 命令也是令人够烦的,例如:INSERT INTO table1 (‘栏位1’, ‘栏位2’, ‘栏位3’, … ) VALUES ( 值1, 值2, 值3, …) INSERT INTO table2 (‘栏位1’, ‘栏位2’, ‘栏位3’, … ) VALUES ( 值1, 值2, ...

2018-06-23 10:55:43 385

原创 PHP 数据库读写操作的设计 (二)

我的数据基础类 MyInfo在面向对象的程序设计中,通常会在类中设计属性来储存数据,例如:class foo{ Private $name; Public function setName($value) { $name = $value; } Public function getName() { return $this-&amp;amp;gt;name; }}当一个...

2018-06-23 10:13:25 147

原创 PHP 数据库读写操作的设计 (一)

数据库连接类的设计网站系统中的数据是存放在数据库中,所以就无法避免地要对数据库进行频繁的读写操作。虽然 PHP 提供了很好的方法,但每次都得写一长串也是个麻烦,所以设计了一个易用的读写数据库类别。一、利用单例模式(Singleton)创建数据库连接类数据库连接对象通常会在整个项目中被共享使用,没有必要在每一次使用时都实例化一个对象,不仅低效而且浪费资源。因此采用单例模式的类来确保它在整...

2018-06-22 11:55:29 658

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除