一直都是技术,今天来点儿文艺范儿……
今天是31号,3月的最后一天,如果再不记点什么,一月又将过去。我们总该记录点什么,无论以什么方式,某一天静下来,看看自己曾经留下的一些印记,感觉还是很不一样的。先是生活,再是工作,记录一下这个月的点点滴滴。
先从生活开始吧。何谓生活?很好的一个解释就是生下来,活下去。帝都的空气质量的确很不好,隔三差五的就是重度雾霾,长期居住真的可能会少活几年。尽管是这样,我们还是愿意在这里,即使是孤身一人。这时候总是会想起公司老总说的一句话,我们把这二十多岁人生最美好的一段时间选择在了帝都,总是要做出一番事业来吧!
记得那时刚来北京找工作的时候,面了一家公司,前面都谈得挺好的,之后谈到待遇的时候,人事是这么跟我说的:之前面试你的经理反映你的情况都很好,但是我们公司有规定,鉴于你还没毕业,所以说工资的话可能比较低,但是生活肯定是没问题。我说,那是多少呢?这时,那个人事女士笑了,说2000加一点。她说可能2000块钱你生活得不会很滋润,但是你可以生存下去,接下来说了一些可以生存下去的方法。别的我没怎么在意,但是她说的滋润这个词留在了我心里,直到现在。
这几天帝都的气温确实是回升了,一不留神,道边的花儿都开了,若不是这些花花草草,还真不知道帝都也有春天。今年北京到现在为止,还没下过一场真正的雨,或许北京下雨本来就很少见吧。记得小时候,总是盼望着过年,因为过年了可以吃糖,仅此而已。现在我们大了,发现总是不经意间,一年又过去了,过年回到家里,母亲额头的皱纹又多了几条,父亲两鬓的白发又添了几许。突然之间发现,曾经为我们撑起一片天的父亲脊梁已经弯了,曾起早贪黑养育我们的母亲动作越来越迟缓。一个电话,一句问候,父母已经喜笑颜开,足矣。看到这里,是否发现已经很长时间没给父母打电话了呢?(打一个吧,也花不了几分钟……)人生最大的憾事莫过于,树欲静而风不止,子欲养则亲不待!
想想身边的人和事,身边某君说的一句话很有道理:不怕没你聪明的人比你努力,就怕比你聪明的人比你还努力!是啊,二十四、五岁的年纪,如果读书不跳级,不留级,现在正好应该是工作满一年。此时不努力,更待何时呢?献给和自己一样的那群人,共勉……
=====================================================================================================
简单的生活聊完了,还是得聊聊程序啊,谁叫咱是干这行的呢。最近发现了自身的一个问题,因为之前一直都是在MVC模式下做开发,这几天做WebForm的后台反而一下子不习惯了,很多简单的绑定都不熟练了。还是应了那句老话啊,熟能生巧。做的多了,方法自然就出来了。
近期做了几个百度地图的应用,因为公司系统有需要,需要实现在微信中通过自身的位置,获取一定范围内的商家店铺。几经转化之后,变成了纯数学问题,我的位置(圆心)到某点的位置小于一个值(半径)就ok。主要代码的实现方式:
1 /// <summary> 2 /// 经纬度坐标 3 /// </summary> 4 5 public class Degree 6 { 7 public Degree(double x, double y) 8 { 9 X = x; 10 Y = y; 11 } 12 private double x; 13 14 public double X 15 { 16 get { return x; } 17 set { x = value; } 18 } 19 private double y; 20 21 public double Y 22 { 23 get { return y; } 24 set { y = value; } 25 } 26 } 27 28 29 public class CoordDispose 30 { 31 private const double EARTH_RADIUS = 6378137.0;//地球半径(米) 32 33 /// <summary> 34 /// 角度数转换为弧度公式 35 /// </summary> 36 /// <param name="d"></param> 37 /// <returns></returns> 38 private static double radians(double d) 39 { 40 return d * Math.PI / 180.0; 41 } 42 43 /// <summary> 44 /// 弧度转换为角度数公式 45 /// </summary> 46 /// <param name="d"></param> 47 /// <returns></returns> 48 private static double degrees(double d) 49 { 50 return d * (180 / Math.PI); 51 } 52 53 /// <summary> 54 /// 计算两个经纬度之间的直接距离 55 /// </summary> 56 57 public static double GetDistance(Degree Degree1, Degree Degree2) 58 { 59 double radLat1 = radians(Degree1.X); 60 double radLat2 = radians(Degree2.X); 61 double a = radLat1 - radLat2; 62 double b = radians(Degree1.Y) - radians(Degree2.Y); 63 64 double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + 65 Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2))); 66 s = s * EARTH_RADIUS; 67 s = Math.Round(s * 10000) / 10000; 68 return s; 69 } 70 71 /// <summary> 72 /// 计算两个经纬度之间的直接距离(google 算法) 73 /// </summary> 74 public static double GetDistanceGoogle(Degree Degree1, Degree Degree2) 75 { 76 double radLat1 = radians(Degree1.X); 77 double radLng1 = radians(Degree1.Y); 78 double radLat2 = radians(Degree2.X); 79 double radLng2 = radians(Degree2.Y); 80 81 double s = Math.Acos(Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Cos(radLng1 - radLng2) + Math.Sin(radLat1) * Math.Sin(radLat2)); 82 s = s * EARTH_RADIUS; 83 s = Math.Round(s * 10000) / 10000; 84 return s; 85 } 86 87 /// <summary> 88 /// 以一个经纬度为中心计算出四个顶点 89 /// </summary> 90 /// <param name="distance">半径(米)</param> 91 /// <returns></returns> 92 public static Degree[] GetDegreeCoordinates(Degree Degree1, double distance) 93 { 94 double dlng = 2 * Math.Asin(Math.Sin(distance / (2 * EARTH_RADIUS)) / Math.Cos(Degree1.X)); 95 dlng = degrees(dlng);//一定转换成角度数 原PHP文章这个地方说的不清楚根本不正确 后来lz又查了很多资料终于搞定了 96 97 double dlat = distance / EARTH_RADIUS; 98 dlat = degrees(dlat);//一定转换成角度数 99 100 return new Degree[] { new Degree(Math.Round(Degree1.X + dlat,6), Math.Round(Degree1.Y - dlng,6)),//left-top 101 new Degree(Math.Round(Degree1.X - dlat,6), Math.Round(Degree1.Y - dlng,6)),//left-bottom 102 new Degree(Math.Round(Degree1.X + dlat,6), Math.Round(Degree1.Y + dlng,6)),//right-top 103 new Degree(Math.Round(Degree1.X - dlat,6), Math.Round(Degree1.Y + dlng,6)) //right-bottom 104 }; 105 106 } 107 }
另外也做了几个与百度地图相关的Demo,一个是根据GPS坐标,得到百度坐标,并将百度坐标在百度地图上标注出来,注意是在后台实现。在网上搜了一下百度API的接口,发现很多都是Javascript调用或者Android调用的,之后找到一个Web服务的API,通过模拟HttpRequest和HttpResponse向百度发请求,拿到百度坐标之后标注一下就是A piece of cake了。当然如果有需要的同学,可以邮箱啊。
还有就是通过GPS坐标拿到百度坐标的详细地理位置,类似于发出百度大厦的GPS坐标,返回百度大厦这样的详细地理位置信息,百度API上也有类似的接口。还有一个就是根据百度地图上的标注,动态的画曲线,需要的都可以交流。
今天在写前端的时候也遇到了两个问题,记录一下,有幸看到的童鞋希望能自己写的时候留心一点。
JQuery的查找元素我们经常会用到,例如我要找某个元素的父级元素中的某一个,只需要通过parents(...) 括号里可以添加选择器,这样就可以定位到你想要找的父级元素,不管中间有几个层级都可以找着。相反的,我们要找子级元素的时候也可以通过children(...)括号里也可以是选择器,但是值得注意的是:children只会向下找一级。意思就是如果有下面的结构:通过$("#parent").children(".children")是获取不到div元素的,因为children()只会找他的直接子级元素,也就是$("#children1")和$("#children2"),如果需要找$(".children")可以通过find()来查找。
<div id="parent"> <div id="children1"> <div class="children"></div> </div> <div id="children2"></div> </div>
还有一个问题就是被Ajax坑了,没区分大小写导致查了很长时间才找出错误,特别注意$.ajax()中的type仅为“POST”和“GET”,什么Post,post都不好使。故在此把JQuery中的几个Ajax请求给拿出来复习一下。
$.load(url,[,data],[,callback]),局部刷新非常爽;
$.get(url,[,data],[,callback],[,type]),Get方式的异步请求;
$.post(url,[,data],[,callback],[,type]),Post方式向服务器提交;
$.ajax(option),option常用参数如图:
另外说几句题外话,也是在公司里遇到的一些情况:永远不要看不起比人的劳动成果,很多事情想起来是一回事儿,真正做起来是另外一回事儿。做人尽量谦虚点,因为你要相信,别人身上总有你没有的优点!大家都是程序员,本是同根生,相煎何太急!
好吧,已经到愚人节了,提醒各位小心被愚啊!