朋友當年入的深圳集體戶。現在已經在帝都,需要用到戶口本首頁。昨天去羅湖人才大市場,被告知要有身份證原件才可以,於是順豐來身份證,今天再去被告知戶籍不再那裡。按照身份證上地址去看了也沒用,然後打電話給發證機關的戶政室,被告知要查戶籍信息,必須本人查。
接口需要添加一個定時發布的功能,這樣可以提前準備好內容,時間一到,用戶就能看到。這裡用到js和php的日期操作。
大概搜了下html5中用datetime相關的表單,但是由於瀏覽器實現的問題,為了穩定性最終放棄。使用"YYYY-MM-DD HH:mm:ss"這樣的文本來保存設置時間,後台轉換成utc時間戳,最後通過對比時間戳來決定是否發布。時間全部顯示為北京時間。php使用了thinkphp框架。js和php默認返回的時間戳都是UTC時間。
後台的添加新聞模板:
<input type="text" class="" size="100" maxlength="300" name="publishTimeU" id="publishTimeU" value=""/>
<input type="hidden" maxlength="100" name="publishTime" id="publishTime" value=""/>
<script type="text/javascript">
(function($){
var date = new Date();
date = date.toISOString().substr(0, 19)+"-08:00";
var date1 = new Date(date);
date1 = date1.toISOString().substr(0, 19);
date1 = date1.replace(/T/, " ");
$("#publishTimeU").val(date1);
//定時發布失去焦點時,換算時間戳
$("#publishTimeU").blur(function(){
var ptString=$("#publishTimeU").val();
ptString=ptString.replace(/ /, "T")
var pt=Date.parse(ptString+"+08:00")/1000;
$("#publishTime").val(pt);
});
})(jQuery);
</script>
後台的修改新聞模板:
<input type="text" class="" size="100" maxlength="300" name="publishTimeU" id="publishTimeU" value=""/>
<input type="hidden" maxlength="100" name="publishTime" id="publishTime" value="{$vo.publishTime}"/>
<script type="text/javascript">
(function($){
var date = new Date($("#publishTime").val()*1000);
date = date.toISOString().substr(0, 19)+"-08:00";
var date1 = new Date(date);
date1 = date1.toISOString().substr(0, 19);
date1 = date1.replace(/T/, " ");
$("#publishTimeU").val(date1);
//定時發布失去焦點時,換算時間戳
$("#publishTimeU").blur(function(){
var ptString=$("#publishTimeU").val();
ptString=ptString.replace(/ /, "T")
var pt=Date.parse(ptString+"+08:00")/1000;
$("#publishTime").val(pt);
});
})(jQuery);
</script>
php接口:
$now = new DateTime(null, new DateTimeZone('Asia/Hong_Kong'));
$nowTimestamp = $now->getTimestamp();
//只需在查詢語句的map里添加時間戳對比即可
$map = array (
'h' => array('like','%'.$cid .'%'),
'publishTime' => array('LT',$nowTimestamp),
'status' => 1
);
$count = $model->where ( $map )->cache (false)->count ();
谷歌相冊如果選用推薦畫質可以無限容量保存,於是抱着試試看的態度打算將其所謂一個備份。使用中發現,真是好用,所以過來推薦一下。除了容量大,谷歌相冊還能識別人臉,於是可以方便的查看某個人的所有照片。除了按人臉和地理位置分類,谷歌相冊還可以識別森林,火車,貓,鴨子,汽車,雕像,帆船等,雖然有時候會有識別錯誤,但是也蠻搞笑。視頻也是可以保存的,保存後就可以直接通過瀏覽器查看了。
由於谷歌在內地受限,所以我並沒有使用谷歌相冊安卓客戶端,而是定期通過PC上傳照片,反正相機裏的也是要上傳的。同樣的ss代理,電信確實是最快的,差不多能達到4M的上傳速度。前幾天用天威寬帶,差不多穩定在1M的上傳速度,今天只有0.5M。也在長城寬帶中試過,非常不穩定,快時2M,慢時只有幾十K。
這是Emanon參與製作的一款遊戲,真的耗費了三年多時間,現在終於上線。現在肯花這麼久開發遊戲的真的很少,所以衝著用了這麼久時間打磨也應該差不到哪裡去。蘋果App Store鏈接:元素之刃。我和Emanon都沒有蘋果設備,所以無法寫篇測評什麼的。什麼時候玩過了,再來補充。
接了個iPad2,結果不適配,雖然硬要玩也能玩一下(原始版特效會變黑像素塊,後面關卡會因為看不到血條而打不過;第二版後面關卡會閃退)。所以建議iPad2以下的用戶還是不要嘗試了。有一點提示是,由於這是一個兩三百兆大小的單機遊戲,所以在升級過程中,盡量不要動它,待它升級完成後再開始玩。否則如果自己有誤操作的話,有一定幾率丟失遊戲進度資料。
本文更新於 2016/03/14。
手機Xperia Go
前些天出去玩,遇到一條狗,那條狗肯定是被人喂慣了,所以很會粘人。躲避它的途中被一個小孩撞倒,牛仔褲也摔了一個大口子,手機屏也摔碎了。
Go這個手機雖然運行速度慢了些,但用起來還是很順手的捨不得扔。於是在萬能的淘寶上買了一個屏三十多。寄來發現我不小心拍錯了型號,還好買了運費險。退貨後又買了一個,按照iFixit中Sony Xperia go Front Glass/Digitizer Replacement換上了新屏。買眼鏡時送的小螺絲刀起到很大作用,否則裏面有一個特殊的螺絲真是沒法取下來。最後裝好後屏幕有些翹,主要是因爲排線並沒有完全貼合,我不敢使勁按排線,怕按折了,最後用強力膠沾牢就不翹了。
索尼的小手機手感都特別好,又有防塵防水的特性。哪天這個手機確實不行了,應該還是會選索尼的。上次去香港感覺M4就不錯,1500左右。Z系列的Compact當然是更好,但是太貴啦。而且都不支持移動4G,也是一大遺憾。
現在才寫就是拖延症。
去年11月份公司出差去泰國。坐的廉價亞航,從深圳到曼谷正價往返2000左右。中國公民可以泰國落地簽,過程有些複雜,需要準備1000泰株簽證費,這個可以在機場換。需要照片,也可以在機場照。然後填表,記得有兩張表,一張是在飛機上發的(如果飛機上沒領到,機場也有),一張是在機場的。按照樣張填寫即可,需要注意的是有一欄要填入住酒店的名字,這個要提前準備好,否則臨時不記得就麻煩了。海關人員的態度不好。40元在淘寶買的7天的泰國Dtac旅遊電話卡,即可以打電話,又可以上網。上網的話不記得3/4G是多少流量了,用完之後還有無限的2G流量。我到最後也沒用完3G流量。
過完海關已是後半夜,路上接我們的同事還被交警攔下吹了酒精檢測儀。同時嚇夠嗆,倒不是喝了酒,而是他根本沒有駕照!還好只是吹了就放行了,並沒有查駕照。
曼谷7-11挺多的,店員也能聽懂一些英語。意外的是google translate並不能翻譯圖片中泰文,這樣就坐車啊點菜啊什麼的就比較麻煩了。說道7-11,荷蘭風車的牛奶真的很好喝!吃得方面發現曼谷日本料理很多,而且都特別好吃,魚很鮮嫩!麵呢就之吃過一次蕎麥麵,感覺也很正宗。聽說是二戰時泰國沒有被日本欺負,所以泰日文化上沒有很大衝突。批薩意麵也很不錯,記得吃了一個批薩,上面居然有湖南那種大紅辣椒!也是又好吃又便宜。還去吃了一個龍蝦麵,華人餐館,上菜前所有服務員齊聲用蹩腳中文報出菜名。其實龍蝦麵是好看不好吃,龍蝦很大很震撼!小吃方面,在大皇宮旁邊吃了烤香蕉,可以試試。還吃了碗泡麵,也挺好吃的。有一天早上在街邊買的炸豆腐,下面有辣油和黃瓜,吃得也挺過癮。還有冰鎮飲料,真的放了好多冰啊,回來後覺得國內放的冰也就是意思一下。
泰國是佛教國家,這點去一次寺廟就感受到了。我在大皇宮附近轉悠的時候進了一個廟,裡面有幾口大水缸,人們會從中取水洗臉或灑在身上或裝到小透明塑料袋子里帶走。有一個大堂,只有北面有牆,人們拖鞋上去跪拜。大堂邊上有鍾、鼓等參與性的設施。附近還有一個更加莊重的大堂。繼續往前走看到幾個火爐,人們可以買油,可能是香油,倒到火爐里。旁邊有一口大油缸,有的人沒有把油倒進火爐而是倒到油缸里。再往前的一個小巷子里兩個黑色的大垃圾袋裝滿了空油瓶,油瓶就是我們常見的街邊賣甘蔗汁常用的透明塑料瓶子。繞了一圈從小門出來,看到一位婦女在賣鴿子,鴿子圈在籠子里。河邊的小巷裡有各種工藝品,佛像,佛牌等。
泰國的全稱是泰王國,在街道上經常看到國王和皇室成員的巨幅畫像。根據維基百科介紹,2014年5月22日的軍事政變是泰國自1932年以來,軍方第12次發動政變。根據自由之家2015年的數據,泰國也屬於不自由的國家。
回來的那天是周末,見識了一下曼谷的堵車。總體來說曼谷空氣還是非常不錯的,天藍的就像東北的冬天一樣。這種藍天我在深圳很少見到。泰國人我接觸的不多,大概的感覺是生活比較安逸,所以干起活來不如大陸人拼。像我們的泰國的同事,像讓他們周末稍微干點活,真是千難萬難,其實這是大陸的悲哀。
題外話,今天聽說Google My Tracks要關閉了,唉,谷歌又關了一個好服務。還好我從泰國回來後就把Google Fit開啟了。但是Fit有一個缺點,就是無法查看衛星圖層,為什麼要查看衛星圖層呢,因為地圖圖層的位置是漂移的。
本文更新於 2016/12/30。
最近有一個需求是這樣,數據庫有電影幾百條,預告片幾百條。之前是倒序排列返回給客戶端,這樣所有客戶端就能看到最新的片子和預告片,電影和預告片是兩個接口。現在由於考慮服務器壓力,決定隨機展現影片和預告片給客戶端,兩個接口合併成一個,按ABABAB這樣返回。我的做法是以用戶id加今年的天數作為隨機種子對電影和預告片進行隨機排序,然後截取亂序後的數組進行交叉合併並進行分頁,再返回給客戶端。這樣的效果是同一用戶在同一天打開的列表是一樣的,而且影片條目不會重複。而不同用戶打開的列表卻不一樣。公司項目用的ThinkPHP3.1,看下代碼
//接口urlhttp://domin.com:8042/Video/v1.php?qt=Videolist&pi=2&ps=20&uid=972124678
class ApiVideolistAction extends Action{
function getData(){
//獲取用戶id,單頁條目數量和第幾頁
$uid = I("get.uid", "0", "intval");
$pageSize = I("get.ps", "20", "intval");
$pageNum = I("get.pi", "1", "intval");
$model1=new Model();
$film=$model1->query("SELECT video_static.sid FROM video_static, category_video WHERE category_video.cid = 4 AND video_static.status = 1 AND category_video.vid = video_static.sid ");
$trailer=$model1->query("SELECT video_static.sid FROM video_static, category_video WHERE category_video.cid = 50 AND video_static.status = 1 AND category_video.vid = video_static.sid ");
$count = count($film) > count($trailer) ? count($film) : count($trailer);
$allPage = ceil($count / $pageSize);
if ($pageNum > 0 && $pageNum <= $allPage) {
$limit_start = ($pageNum - 1) * $pageSize;
} else {
$limit_start = 0;
}
$dayNum=(int)date('z');
//设置隨機種子,只要種子一樣,隨機後的數組就一樣
srand($uid+$dayNum);
//打亂數組
shuffle($film);
shuffle($trailer);
//分頁切數組
$vid_listF=array_slice($film,$limit_start,$pageSize);
$vid_list1F=array_slice($trailer,$limit_start,$pageSize);
//交叉合併數組
$arr = array();
for($i=0;$i < $pageSize; $i++){
array_push($arr,$vid_listF[$i]);
array_push($arr,$vid_list1F[$i]);
}
if (empty($arr)) {
return array(
"resultStatus" => 1,
"allCount" => 0,
"data" => null
);
}
$data = array();
foreach ($arr as $every) {
//這裡用了ThinkPHP的方法根據sid獲取一條數據
$find = D('VideoStatic')->find($every['sid']);
//對數據進行處理的示例
$find['videuri'] = $find['videuri'] ? "http://" . APP_HOST_NAME . ":8042/" . $find['videuri'] : "";
if (empty($find)) { continue; }
$data[] = array_change_key_case($find, CASE_UPPER);
}
$result = array(
"allCount" => $count,
"pageCount" => $allPage,
"pageSize" => $pageSize*2,
"pageIndex" => $pageNum
);
return array(
"resultStatus" => 1,
"pinfo" => $result,
"data" => $data
);
}
}
既然文章名叫PHP隨機,其實PHP隨機最常用的用法是rand(10,13),它會返回最小10,最大13的整數。