一直都是技术,今天来点儿文艺范儿……

      今天是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     }
View Code

      另外也做了几个与百度地图相关的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>
View Code

      还有一个问题就是被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常用参数如图:

      另外说几句题外话,也是在公司里遇到的一些情况:永远不要看不起比人的劳动成果,很多事情想起来是一回事儿,真正做起来是另外一回事儿。做人尽量谦虚点,因为你要相信,别人身上总有你没有的优点!大家都是程序员,本是同根生,相煎何太急!

      好吧,已经到愚人节了,提醒各位小心被愚啊!

 

 

posted @ 2014-04-01 00:54  迷失的醉猫  阅读(1461)  评论(6编辑  收藏  举报