RT
最近发博文不是很积极,事情很多很杂,心也很乱。索性一刀斩掉乱麻,放弃了执着了很久的事情,可以说是性格上面的硬伤,需要慢慢磨砺克服
装了win8,速度明显快了很多,主要体现在开关机的体验上面,因为输入密码之后不会像win7那样转圈了~但是也是各种不适应
just a diary
RT
最近发博文不是很积极,事情很多很杂,心也很乱。索性一刀斩掉乱麻,放弃了执着了很久的事情,可以说是性格上面的硬伤,需要慢慢磨砺克服
装了win8,速度明显快了很多,主要体现在开关机的体验上面,因为输入密码之后不会像win7那样转圈了~但是也是各种不适应
RT
明天又过生日,今年没人陪我喝酒了,腊八在8号预示着美好的一年。
写在前面:上周六去面试了,境遇比文中的大龄程序猿稍微好点。但是反映不出不少问题,继续努力。
上周五,面试了一个“大龄程序员”,84年,5年工作经验。表达能力不太好 ,整个自我介绍,说着说着不知道说到那里去了。
然后聊聊技术,我不断尝试去问他一 些更简单的问题,但是每个问题都回答的让我非常失望。我不断尝试去发现他优点,直到最后我确定找不到让他过面试的理由。
单例说不清楚,线程安全说不清,链表与数组各自优劣说不清,框架更是一塌糊涂。
然后我问他有什么想了解的么?这个问题是每次面试以后必问的,我觉得是对面试者的一个尊重。他说没有想到电商行业要求这么高,他以为只是对前台要求高,后台很简单的。然后问了公司的团队气氛,作息。
后面我又问了几次还有什么想了解的么?因为我一直在思考:我该怎么拒绝他?一直以为我都是面试完,直接告诉面试者通过了,等行政的复试邮件,或是抱歉,面试没有过。如果我直告诉拒绝他,会不会太伤害他,毕竟他年纪摆在那里。
纠结了一会,最后还是告诉他:抱歉,你的面试没有过。然后他在那里突然好像有点不知所措,似坐似站,表情有点尴尬。大约1分多约,才起身说了声谢谢。然后送他出门。
不知道为什么,内心有种莫名的感慨和触动,我已经尽力了,而且我必须对团队的其它伙伴负责。突然觉得内心有一种悲哀,悲凉。后来跟HR分享这场面试,他们说我太多愁善感。拒绝一个大龄的职级职位的求职者,是有点悲凉,但是可怜之人必有可恨之处。谁让他们放弃给自己充电列?这么多年一点不进步列。
如些想来,心里倒觉得坦然了许多,但心里的份感触是挥之不去的。同时也提醒自己,要多努力一点,不要等到自己30岁时也落到如此境地。
直至今天,仍耿耿于怀,发来与君共勉!
上个周日去给当伴郎了。
周日早上雾霾十分严重,早上去的时候到了路口都不知道该往那里走,好不容易摸到小区门口了,又看不清楼。幸亏杨哥下楼来迎接司机,帮我指了一下楼的位置,这样才算到了新郎家。然后就是摄像的跑过来拍了一些小花絮,自己很不给力,胸花给新郎带了半天没带好,然后新郎的表哥给重新带了一下…新郎的爸爸给了我好几个红字条上面写着“青龙”,然后就是一把一角的硬币,说到了桥或者十字路口就要把红字条和硬币一块扔下去,好像是什么属相相克什么的,没听懂。反正最后硬币扔完了,还剩下好几张字条。
之后有幸做了结婚车队的头车,司机很能说,而且用的也是zippo火机。在雾霾中慢慢到了新娘家,塞完红包之后顺利见到新娘。然后开始找新娘的红鞋子,一个大姐使劲推我,我开始还很好奇为啥推我,原来第一个鞋子是放在了电视机后面,当时我正好站在电视那里。可能是紧张又把鞋子放到了地上,有点尴尬…
然后就是新郎帮新娘穿鞋,吃饺子,最后来到了饭店。举行仪式的时候在舞台旁边傻站了一会,新郎敬酒的时候,发了发喜糖~
新郎显得很精神,荣光焕发,但是略显紧张,毕竟是第一次结婚~但是平日的机智和幽默也能体现出来。
二十多年来,第一次穿西服打着领带,而且西服还是借的……记得大四去农行面试的时候,大概去了300多人吧,只有我一个是穿着夹克去的,其他都是正装去面试。最终理所当然没有被录用,不然这个世界就少一个码农。
提到http://www.2345.com/这个网址大家可能不会陌生,这是一家专门推广自己浏览器和软件的公司,同时也吸引了大量推广员以及电脑维修点帮他推广,安装他们的软件。
之前用python写过,2345自动签到,但是最近发现2345那帮人在登陆上做了手脚,每次都让你做个数学题,也就是验证码了,所以不能自动登陆了,也就没法签到了。
经过一下午的研究,当然是上个周末了…发现m.2345.com上面的登陆还是没有验证码的,而且会创建一个domain为*.2345.com的cookie,这样就能完成登陆啦,然后签到什么的都是浮云..嘿嘿
看代码:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
/**
 * 
 * @ClassName: Jifen2345
 * @Description: 2345自动签到 由于2345把登陆页面都加上了数字验证,但是发现 m.2345.com
 *               仍然不需要验证码即可创建domain为*.2345.com的cookie 2013-11-19
 * @author kaedeen.com
 * @date 2013-11-19 下午9:00:08
 * 
 */
public class Jifen2345 {
    private static final Logger logger = Logger.getLogger(Jifen2345.class);
    private static DefaultHttpClient httpclient = null;// HttpClient对象
    private static HttpResponse response = null;
    private static String mloginUrl = "http://m.2345.com/index.php?c=login&a=ajaxLogin";// 手机登陆请求地址
    private static String checkinUrl = "http://jifen.2345.com/jifen/every_day_signature_new.php";// 签到请求地址
    private String userName = "";// 用户名
    private String passWord = "";// 密码明文
    /**
     * 构造函数
     * 
     * @param userName
     * @param passWord
     */
    public Jifen2345(String userName, String passWord) {
        this.userName = userName;
        this.passWord = passWord;
    }
    /**
     * 登陆
     * 
     * @return
     */
    public boolean login(){
        boolean flag = false;
        httpclient = new DefaultHttpClient();
        // 设定cookie策略
        HttpClientParams.setCookiePolicy(httpclient.getParams(),CookiePolicy.BROWSER_COMPATIBILITY);
        List formparams =new ArrayList();
        formparams.add(new BasicNameValuePair("username", userName));
        formparams.add(new BasicNameValuePair("password", passWord));
        HttpPost httppost = new HttpPost(mloginUrl);
        httppost.setHeader("Accept", "*/*");
        httppost.setHeader("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,zh-TW;q=0.2");
        httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
        httppost.setHeader("Host", "m.2345.com");
        httppost.setHeader("Origin", "http://m.2345.com");
        httppost.setHeader("Proxy-Connection", "keep-alive");
        httppost.setHeader("Referer", "http://m.2345.com/index.php?c=login");
        httppost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
        try {
            httppost.setEntity(new UrlEncodedFormEntity(formparams,  HTTP.UTF_8));
            //获取登陆应答内容
            response = httpclient.execute(httppost);
            if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                int code=getLoginCode();
                if(0==code){
                    flag=true;
                }else{
                    logger.info(userName+"-用户名或密码有误!");
                }
            }else{
                logger.info(userName+"-2345登陆请求出错,post返回状态:"+response.getStatusLine().getStatusCode());
                return false;
            }
        }catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            httppost.abort();
        }
        return flag;
    }
    /**
     * 每日签到
     * @return
     */
    public boolean everyDaySignature(){
        boolean flag = false;
        HttpPost httppost = new HttpPost(checkinUrl); 
        httppost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
        httppost.addHeader("Host","jifen.2345.com");
        httppost.addHeader("Referer","http://jifen.2345.com/index.php");
        try {
            //获取登陆应答内容
            response = httpclient.execute(httppost);
            if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                HttpEntity httpEntity = response.getEntity(); 
                String responseStr = EntityUtils.toString(httpEntity);
                //logger.info(userName+"-签到请求返回:"+responseStr);
                if(responseStr.startsWith("succ")){
                    flag=true;
                    logger.info(userName+"-签到成功!:"+responseStr);
                }
            }else{
                logger.info(userName+"-2345签到请求出错,post返回状态:"+response.getStatusLine().getStatusCode());
                return false;
            }
        }catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            httppost.abort();
        }
        return flag;
    }
    /*返回字符串
    * {"code":0,"msg":"u7528u6237u540du6216u5bc6u7801u4e0du5bf9"}
    */
    private int getLoginCode(){
        int code=2;
        HttpEntity httpEntity = response.getEntity(); 
        String responseJsonStr = "";
        try {
            responseJsonStr = EntityUtils.toString(httpEntity);
            //logger.info("responseJsonStr---"+responseJsonStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }//取出应答字符串 
        Map map = JSONObject.fromObject(responseJsonStr);
        code=(Integer) map.get("code");
        logger.info(userName+"-捕获登陆返回code:"+code);
        return code;
    }
}
  
一点点牢骚:
其实去年就写了2345自动签到的程序,也挂在sae上面签到了一年了吧,因为自己不装机也不坑害别人装他们的浏览器或者软件,只是靠签到,所以一直收入甚微,到现在估计折合软妹币也就49元左右的样子…
话说回来,写这些签到模拟登陆的程序都是个人兴趣,不指望用来赚钱,自己也真心不会赚钱,google adsense都“莫名其妙”被封了,所以基本没啥额外收入了。
大家看代码时候有啥问题,请您留言,我看到会解答。如果伸手要直接可运行程序什么什么的,那个只能给好朋友,所有代码都在这里你都不想研究,我也帮不上你…
我会把代码尽快放到github或者其他上面,敬请关注。