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); Listformparams =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或者其他上面,敬请关注。