分類
記事

戶籍查詢

朋友當年入的深圳集體戶。現在已經在帝都,需要用到戶口本首頁。昨天去羅湖人才大市場,被告知要有身份證原件才可以,於是順豐來身份證,今天再去被告知戶籍不再那裡。按照身份證上地址去看了也沒用,然後打電話給發證機關的戶政室,被告知要查戶籍信息,必須本人查。

分類
程序

定時發布

接口需要添加一個定時發布的功能,這樣可以提前準備好內容,時間一到,用戶就能看到。這裡用到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。

分類
软件

元素之刃

元素之刃-ios

這是Emanon參與製作的一款遊戲,真的耗費了三年多時間,現在終於上線。現在肯花這麼久開發遊戲的真的很少,所以衝著用了這麼久時間打磨也應該差不到哪裡去。蘋果App Store鏈接:元素之刃。我和Emanon都沒有蘋果設備,所以無法寫篇測評什麼的。什麼時候玩過了,再來補充。


接了個iPad2,結果不適配,雖然硬要玩也能玩一下(原始版特效會變黑像素塊,後面關卡會因為看不到血條而打不過;第二版後面關卡會閃退)。所以建議iPad2以下的用戶還是不要嘗試了。有一點提示是,由於這是一個兩三百兆大小的單機遊戲,所以在升級過程中,盡量不要動它,待它升級完成後再開始玩。否則如果自己有誤操作的話,有一定幾率丟失遊戲進度資料。

本文更新於 2016/03/14。

分類
記事

手機Xperia Go

Sony Xperia Go st27i

前些天出去玩,遇到一條狗,那條狗肯定是被人喂慣了,所以很會粘人。躲避它的途中被一個小孩撞倒,牛仔褲也摔了一個大口子,手機屏也摔碎了。

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。

分類
网站

PHP隨機

最近有一個需求是這樣,數據庫有電影幾百條,預告片幾百條。之前是倒序排列返回給客戶端,這樣所有客戶端就能看到最新的片子和預告片,電影和預告片是兩個接口。現在由於考慮服務器壓力,決定隨機展現影片和預告片給客戶端,兩個接口合併成一個,按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&#91;$i&#93;); 
        array_push($arr,$vid_list1F&#91;$i&#93;);
    }
    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的整數。