小項目,就是那種沒有商業項目特別要求(比如涉及支付、手機端、微信版)之類,由個人能一兩個月內完全獨立的開發完成的項目。
小到一個數學算法問題,大到一個簡單的cms、論壇。都算在內。
我認為,博客就是一個很好的鍛煉項目。
所以我開發了OneBlog、freelog兩個基于bootstrap的現代博客。
每個TPer、每個技術人員都應該有自己的技術博客來管理知識、分享知識和交流問題。
## 真實例子
有一天,網上我看到了一個密碼生成器

我在想他背后是怎么實現的呢?
他的需求是什么?我也寫一個試試吧。
這個密碼生成器的最終目的生成定長的隨機字符串,只不過可選供生成的隨機字符創的字符范圍。
所以他應該有2個參數,字符串類型和長度。關鍵算法是隨機拼長。
在我思考之下寫出了這樣一個函數:
~~~
/**
* 用于生成唯一密碼
* @param len int 密碼長度 默認8
* @param pattern string 密碼字符的范圍 第一個是阿拉伯數字 開關 第二個是小寫字母 第三個大寫字母 第四個是特殊字符 如果 都用到就是1111 至少要有一個1
*/
function randpass($len=8, $pattern='1000'){
static $seed = array(
'0123456789',
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'+=-@#~,.[]()!%^*$'
);
if(!is_string($pattern) || strpos('1', $pattern) == -1 || strlen($pattern) > count($seed))
send_error('','生成隨機字符串模式格式有誤');//項目中報錯,通用的應該是拋異常
$pattern = str_split($pattern);
$randStr = '';
foreach ($pattern as $key => $value) {
if($value == '1')
$randStr .= $seed[$key];
}
// echo $randStr;
$temppass = array_fill(0, $len, '');
if(!function_exists('getChar')){
function getChar(&$value, $key, $seed){
$value = $seed[mt_rand(0,strlen($seed)-1)];
}
}
array_walk($temppass, 'getChar', $randStr);
$temppass = implode('', $temppass);
return $temppass;
}
~~~
第一步,根據模式拼接隨機母串;
第二步,用空字符串填充定長的目標數組;
第三步,遍歷數組,將目標數組通過getChar隨機函數進行替換值;
最后,將目標數組合并成字符串返回。
我非常同意“十萬個小時定律”,要成為一個優秀的程序員,必須花足夠的時間在編程上。所以適當的小項目和私活是必要的。
- 序
- 前言
- 內容簡介
- 目錄
- 基礎知識
- 起步
- 控制器
- 模型
- 模板
- 命名空間
- 進階知識
- 路由
- 配置
- 緩存
- 權限
- 擴展
- 國際化
- 安全
- 單元測試
- 拿來主義
- 調試方法
- 調試的步驟
- 調試工具
- 顯示trace信息
- 開啟調試和關閉調試的區別
- netbeans+xdebug
- Socketlog
- PHP常見錯誤
- 小黃鴨調試法,每個程序員都要知道的
- 應用場景
- 第三方登錄
- 圖片處理
- 博客
- SAE
- REST實踐
- Cli
- ajax分頁
- barcode條形碼
- excel
- 發郵件
- 漢字轉全拼和首字母,支持帶聲調
- 中文分詞
- 瀏覽器useragent解析
- freelog項目實戰
- 需求分析
- 數據庫設計
- 編碼實踐
- 前端實現
- rest接口
- 文章發布
- 文件上傳
- 視頻播放
- 音樂播放
- 圖片幻燈片展示
- 注冊和登錄
- 個人資料更新
- 第三方登錄的使用
- 后臺
- 微信的開發
- 首頁及個人主頁
- 列表
- 歸檔
- 搜索
- 分頁
- 總結經驗
- 自我提升
- 進行小項目的鍛煉
- 對現有輪子的重構和移植
- 寫技術博客
- 制作視頻教程
- 學習PHP的知識和新特性
- 和同行直接溝通、交流
- 學好英語,走向國際
- 如何參與
- 瀏覽官網和極思維還有看云
- 回答ThinkPHP新手的問題
- 嘗試發現ThinkPHP的bug,告訴官方人員或者push request
- 開發能提高效率的ThinkPHP工具
- 嘗試翻譯官方文檔
- 幫新手入門
- 創造基于ThinkPHP的產品,進行連帶推廣
- 展望未來
- OneThink
- ThinkPHP4
- 附錄