一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

VS2015 +EF6 连接MYSQL数据库生成实体

使用EF设计器 此时此刻,发现二逼了,咋没有MySQL Database呢? 好吧,下面重点: 需要下载安装: 1:mysql-for-visualstudio-1.2.6.msi http://dev.mysql.com/downloads/file/?id=460645 2:mysql-connector-net-6.9.8.msi http://dev.mysql.com/downloads/connector/net/ 3:使用Nuget安装EF   我这边是已经安装完了(版本选择6.1以上的),所以显示“更新”和“卸载”,如果你安装了,继续看下面的   下图是随便找了一个没安装的,就会有“安装”按钮,   4:使用Nuget安装Mysql.Data.Entity 与安装EF相同 点击安装后,一会会出现如下图:     执行完上述步骤,看web.config文件,会自动增加如下代码 OK,现在我们所有的步骤就执行完了。最好重启下VS(不知道是不是必须,反正我重启了),之后重新编译。 再之后,就可以按开始的步骤生成MYSQL对应的实体了。 注:如果刚开始那两个MSI文件安装有问题,则生成实体的时候,到了这一步之后(如下图),会出现闪退问题,无法生成实体   (本人就遇到过这个问题) 到了这一步,已经没有任何悬念了。   来自为知笔记(Wiz) from:http://www.cnblogs.com/RushPasser/p/5438334.html

龙生   14 Jul 2016
View Details

全世界只有我们Erlang程序员是正确的

全世界只有我们是正确的,其他的全错了。我们(Erlang程序员)找到了症结并正确的解决了问题,所有的其他人(非Erlang人)都找错了方向,解决了错误的问题。 全世界其他人想解决的问题是如何让现存的程序能并行执行。2004年之前,摩尔定律一直有效。每年我们的程序执行都会变得更快,我们不需要成为一个优秀的程序员,我们不需要掌握更优化的算法就能让程序一年比一年更快。 芯片越来越大,时钟速度越来越快,程序运行速度越来越快,每年大概以15%幅度的性能提升。 到了2004年,这些现象终止了。芯片已经足够大,时钟的速率已经快到在一个时钟周期内时钟脉冲不能到达芯片的所有部分。电路设计开始改变。多核处理器出现。 从2004年开始,芯片的体积仍然在增大,但时钟的速率开始变小,每个芯片上的CPU数量开始增加。我们从每一个芯片只有一个超级处理器的时代进入到每个芯片有多个速度较慢、性能较弱的多核处理器时代。 由此开始,顺序执行的程序显得越来越慢,一年慢过一年,而并行执行的程序开始变得越来越快。 问题是,根本没有并行执行的程序,有也是极少。 而Erlang是一种具有并发特征的编程语言,所以Erlang程序本质上在具有并行能力的计算机上运行时要比其它程序都快的多。而唯一能阻挡它运行的更快的问题就是Erlang程序中可能存在一些必须顺序执行的瓶颈。 并行程序中有需要顺序执行的部分,这正应验了Amdahl定律。 假设你的程序中有10%是需要顺序执行的(其余部分可以并行),可以并行的部分的执行时间可以压缩近似0——只要有足够的可以并行的处理器。但顺序执行部分的时间无法缩减。 如果程序中含有10%的需要顺序执行的代码,你的程序执行速度最高能提高10倍。其中1/10的程序的速度永远无法提高,其它9/10的程序的执行时间可以缩减至接近0。 所以,对于Erlang程序员来说,提高他们的程序的运行速度的技巧就是找出代码中需要顺序执行的部分。 而对于任何对于其他编写顺序执行程序的程序员来说,提高他们程序速度的方法是找出他们程序中可以并行执行的部分。 让串行程序自动并行化的征途铺满荆棘,无法走通。(并不完全是这样,在某些特殊环境中是可以实现的,但绝非易事)。 现在的数据中心了都排满了酷炫的新型计算机,某些顶级的配置里拥有多达24核。但它们的性能呢?这些酷炫的新机器能快24倍吗? 对某些程序来说是的,但对大多数程序来说不是。对大多数程序来说24个CPU中只有一个被利用。CPU的低利用率成了一个严重的问题。这点正印证了Alexander Gounares Brilliant在Erlang factory谈到的问题。 Alexander的演讲让我们隐约看到了未来。他开创concurix让我们看到了未来的方向。他们正在开发工具能自动找出Erlang代码中需要顺序执行的瓶颈。 Concurix使用这些工具来发现Erlang虚拟机中的瓶颈,在他们的测试中显示了惊人的结果。他们找到了一个图片处理应用中的瓶颈,它是zlib库中的一个程序锁,是用C写成的。他们用Erlang重写了它,用Erlang替换了C代码。 这真是不可思议,C程序本应更快,事实也是,但它却有个同步锁。Erlang程序相比之下要慢,但没有状态锁,这赋予了它提升能力的机会。去掉了C代码后,用Erlang写成的图片处理应用比原始的C程序快了很多。 我很吃惊——惊奇于这样的好东西的出现。 当Alexander在Erlang factory的演讲视频出来之后,你们观看时准备好惊奇吧。这是未来,未来就在下周旧金山。 from:http://www.vaikan.com/erlang-solving-the-wrong-problem/

龙生   13 Jul 2016
View Details

Erlang

Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。 Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。 Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。

龙生   13 Jul 2016
View Details

史上最详细Windows版本搭建安装React Native环境配置

说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特意更新一贴来说明。关于os x环境搭建以及react native入门学习资料请移步:http://www.lcode.org/react-native/ 刚创建的React Native技术交流3群(496508742),欢迎各位大牛,React Native技术爱好者加入交流!同时博客右侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! 1、安装Java 这里需要注意对环境变量的设置,可以根据java -version来检测一下 2、安装SDK 这里需要注意设置环境变量ANDROID_HOME:Android SDK Manager的位置 例如:(ANDROID_HOME=> E:\Android\sdk)设置环境变量PATH:例如:(PATH=> %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools) 3、设置SDK 打开Android SDK Manager。 选中以下项目: Android SDK Build-tools version 23.0.1 Android 6.0 (API 23) Android Support Repository Local Maven repository for Support Libraries 4、安装node 这货是基于js的,node.js轻量级的Web服务器,想要是React Native跑起来需要安装node, 如果没有安装node.js,先去官网安装node.js,最好是4.1以上版本 下载地址:https://nodejs.org/en/ 下载node.js,找好对应的版本,然后去安装就可以了。 大家可以通过node -v的命令来测试NodeJS是否安装成功 5、安装git 安装React-native需要用到git,如果没有配置git,需要先下载对应的客户端,然后将git加入path环境变量即可 下载地址:https://git-for-windows.github.io/ 安装: 6、安装react-native命令行工具react-native-cli git配置完成后可以clone React-native-cli了,建议大家到将react-native-cli克隆到某个盘,不要在c盘直接clone 1)   在命令行中进入你希望RN安装的目录 2)   输入git clone https://github.com/facebook/react-native.git,等待下载 clone成功后: 3)   进入刚刚目录下的react-native目录下的react-native-cli目录,输入npm install -g 安装好之后,可以命令行下就有react-native命令了 7、创建RN项目 进入你希望创建项目的目录后,输入react-native init AwesomeProject,等待一段时间(较慢) 成功后: 目录结构: 7、运行package 在命令行中进入项目目录,输入react-native start,等待一段时间: 这时候可以用浏览器访问http://localhost:8081/index.android.bundle?platform=android,如果可以访问表示服务器端已经可以了。   7、运行项目 刚刚运行package的命令行不要关闭,重新启动一个新的命令行, 进入项目目录,输入react-native run-android 等待运行(如果是第一次运行,首先会下载gradle,时间较长) 运行成功后出现下图 第一次手机肯定报错 […]

龙生   12 Jul 2016
View Details

React Native专题

出处地址:http://www.lcode.org 本文出自:【江清清的技术专栏】 本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶相关讲解。 刚创建的React Native交流7群:131537844  欢迎各位大牛,React Native技术爱好者加入交流!同时博客右侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! 关于React Native各种疑难杂症,问题深坑总结方案请点击查看: Mac和Windows安装搭建React Native环境教程如下:  Mac OS X版本:Mac OS X安装React Native环境点击进入….  Windows版本:Windows系统安装React Native环境点击进入… 微信公众账号推送文章清单目录(每天推送React Native技术文章,右侧二维码扫描):https://github.com/jiangqqlmj/WeixinArticles/blob/master/README.md (一).基本介绍: React Native For Android是伟大的互联网公司Facebook与2015年9月15日发布的,该可以让我们广大开发者使用JavaScript和React开发我们的应用,该提倡组件化开发,也就是说React Native给我们提供一个个封装好的组件让开发者来进行使用,甚至我们可以相关嵌套形成新的组件。使用React Native我们可以维护多种平台(Web,Android和IOS)的同一份业务逻辑核心代码来创建原生应用。现阶段Web APP的的体验还是无法达到Native APP的体验,所以这边fackbook更加强调的是learn once,write everywhere,应用前端我们使用js和React来开发不同平台的UI,下层核心模块编写复用的业务逻辑代码,提供应用开发效率。 [特别注意]目前react native在ios上仅支持ios7以上,Android仅支持Android4.1以上。 React Native项目github地址:https://github.com/facebook/react-native React Native项目官网文档:http://facebook.github.io/react-native/docs/getting-started.html (二).基础入门: 1.React Native For Android环境配置以及第一个实例 2.React Native开发IDE安装及配置  3.React Native应用设备运行(Running)以及调试(Debugging) 4.React Native移植原生Android项目-已废弃 4.1.React Native移植原生Android项目-已更新版本-New 5.React Native进行签名打包成Apk 6.React Native库版本升级(Upgrading)与降级讲解 7.React Native VSCode IDE超强开发插件介绍(智能,代码提醒,运行调试…) 8.React Native特定平台代码说明 9.React Native基础之Linking Libraries链接库配置-适配iOS开发 10.React Native基础之真机设备运行调试应用-适配iOS开发 11.React Native基础之从源代码编译详解-适配Android开发 12.React Native进阶之原生UI组件封装详解-适配Android开发 13.React Native 移植原生iOS平台项目 13.1.React Native 移植原生iOS平台项目-更新最新版本 14.React Native基础之核心组件使用教程介绍-Core Components (三).组件学习: 1.React Native控件之View视图讲解 2.1.React Native配置运行官方例子-初学者的福音(Mac OS X版本) 2.2.React […]

龙生   12 Jul 2016
View Details

开源公司黄页之 Google 开源软件推荐

在企业使用开源和贡献开源方面,Google一直是行业的典范。一直以来,Google都在极力推广和倡导开源,并发布了一系列开源项目。如果没有开源软件,Google也难以达到今日的成功。开源中国社区目前收录了Google 259 款开源软件,详见:http://www.oschina.net/project/google Android SDK——Android SDK logoAndroid开发工具包 Android SDK 是 Android 的开发工具包。 Android是谷歌(Google)公司推出的手机开发平台。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台,下图是 Android 手机平台开发工具包说提供的模拟器界面截图: 但其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时 拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。 Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。谷歌移动平台主管安迪·鲁宾(Andy Rubin)表示,与软件开发合作伙伴的密切接触正在进行中。从去年11月开始,谷歌开始向服务提供商、芯片厂商和手机销售商提供Android平台,并 组建“开放手机联盟”,其成员超过30家。     Android Studio——Android Studio logoAndroid 开发环境 Android Studio 是一个全新的 Android 开发环境,基于 IntelliJ IDEA。类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,在 IDEA 的基础上,Android Studio 提供: 基于 Gradle 的构建支持 Android 专属的重构和快速修复 提示工具以捕获性能、可用性、版本兼容性等问题 支持 ProGuard 和应用签名 基于模板的向导来生成常用的 Android 应用设计和组件 功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览 Chrome——Google浏览器 Google Chrome,又称谷歌浏览器,是一个由Google(谷歌)公司开发的开放源代码网页浏览器。本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)。 软件的beta测试版本在2008年9月2日释出,提供43种语言版本,目前仅适用于Microsoft Windows的XP及Vista平台,并不支援Windows 2000或更早期的版本。Mac OS X和Linux版本正在研发中,并将于日后推出。 Android NDK Android NDK 是在 SDK 前面又加上了原生二字,即 Native Development Kit,因此又被 Google 称为 NDK。 在此之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。 不过,Google也表示,使用原生SDK编程相比Dalvik虚拟机也有一些劣势,比如程序更加复杂,兼容性难以保障,无法访问Framework API,Debug难度更大等。开发者需要自行斟酌使用。 众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。 NDK包括了: 从C / C++生成原生代码库所需要的工具和build […]

龙生   08 Jul 2016
View Details

说说C#的async和await

C# 5.0中引入了async 和 await。这两个关键字可以让你更方便的写出异步代码。 看个例子: public class MyClass {     public MyClass()     {         DisplayValue(); //这里不会阻塞         System.Diagnostics.Debug.WriteLine("MyClass() End.");     }     public Task<double> GetValueAsync(double num1, double num2)     {         return Task.Run(() =>         {             for (int i = 0; i < 1000000; i++)             {                 num1 = num1 / num2;             }             return num1;         });     }     public async void DisplayValue()     {         double result = await GetValueAsync(1234.5, 1.01);//此处会开新线程处理GetValueAsync任务,然后方法马上返回         //这之后的所有代码都会被封装成委托,在GetValueAsync任务完成时调用         System.Diagnostics.Debug.WriteLine("Value is : " + result);     } } 上面在MyClass的构造函数里调用了async关键字标记的异步方法DisplayValue(),DisplayValue()方法里执行了一个await关键字标记的异步任务GetValueAsync(),这个异步任务必须是以Task或者Task<TResult>作为返回值的,而我们也看到,异步任务执行完成时实际返回的类型是void或者TResult,DisplayValue()方法里await GetValueAsync()之后的所有代码都会在异步任务完成时才会执行。 DisplayValue()方法实际执行的代码如下: public void DisplayValue() {     System.Runtime.CompilerServices.TaskAwaiter<double> awaiter = GetValueAsync(1234.5, 1.01).GetAwaiter();     awaiter.OnCompleted(() =>         {             double result = awaiter.GetResult();             System.Diagnostics.Debug.WriteLine("Value is : " + result);         }); } 可以看到,async和await关键字只是把上面的代码变得更简单易懂而已。 程序的输出如下: MyClass() End. Value is : 2.47032822920623E-322 以下是我写的一个静态类,可以方便将一个普通Function执行异步调用: public static class TaskAsyncHelper {     /// <summary>     /// 将一个方法function异步运行,在执行完毕时执行回调callback     /// </summary>     /// <param name="function">异步方法,该方法没有参数,返回类型必须是void</param>     /// <param name="callback">异步方法执行完毕时执行的回调方法,该方法没有参数,返回类型必须是void</param>     public static async void RunAsync(Action function, Action callback)     {         Func<System.Threading.Tasks.Task> taskFunc = () =>         {             return System.Threading.Tasks.Task.Run(() =>             {                 function();             });         };         await taskFunc();         if (callback != null)             callback();     }     /// <summary>     /// 将一个方法function异步运行,在执行完毕时执行回调callback     /// </summary>     /// <typeparam name="TResult">异步方法的返回类型</typeparam>     /// <param name="function">异步方法,该方法没有参数,返回类型必须是TResult</param>     /// <param name="callback">异步方法执行完毕时执行的回调方法,该方法参数为TResult,返回类型必须是void</param>     public static async void RunAsync<TResult>(Func<TResult> function, Action<TResult> callback)     {         Func<System.Threading.Tasks.Task<TResult>> taskFunc = ()=>             {                 return System.Threading.Tasks.Task.Run(()=>                     {                         return function();                     });             };         TResult rlt = await taskFunc();         if(callback != null)             callback(rlt); […]

龙生   07 Jul 2016
View Details

docker详细的基础用法

1、docker安装 debian7安装docker 参考地址:http://www.webmaster.me/server/installing-docker-on-debian- wheezy-in-60-seconds.html echo deb http://get.docker.io/ubuntu docker main | sudo tee/etc/apt/sources.list.d/docker.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 sudo apt-get update sudo apt-get install -y lxc-docker #四行命令,Docker就安装好了。下面创建一个ubuntu虚拟系统: docker pull ubuntu #此处是从官网拉取名为ubuntu的image,也可手动在 https://index.docker.io上搜索想要的镜像。 docker run -i -t ubuntu /bin/bash #创建一个容器,-t是临时终端。 ubuntu12.04、windows、macOS安装docker 参考docker中文文档http://www.widuu.com/docker/ 2、docker使用过程实践 2.1 在测试机启动容器,安装ssh docker run -i -t ubuntu /bin/bash #此方式运行的容器,退出后容器就会 关闭。 apt-get install openssh-server #安装ssh #需要修改/etc/sshd/sshd_config文件中内容 PermitRootLogin yes UsePAM no 2.2 启动ssh,容器以后台方式运行 docker run -d -p 50001:22 <容器id> /usr/sbin/sshd-D #容器id可通过 docker ps-a查看,最上面的为最新的。 2.3 通过ssh连接到容器安装软件 ssh root@127.0.0.1-p 50001 #连上后想装什么就装什么,可使用exit退出容器,但后台还会运行。 2.4 服务安装完成后,停止容器。 docker stop <容器id> #停止运行的容器 2.5 把容器提交生成最新的镜像 […]

龙生   06 Jul 2016
View Details

我从编程总结的 22 个经验

以下所列是我在这些年来软件开发工作过程中受到的启发,还有总结而来的好经验。 开发 从小事做起,然后再扩展 无论是创建一个新的系统,还是在现有的系统中添加新的功能,我总是从一个简单到几乎没有任何所需功能的版本开始,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。 我很喜欢 John Gall 的这句话: “复杂系统总是源于简单系统的演化。” 2. 一次只做一件事 当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。 3. 尽早地添加日志和错误处理 在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。对系统来说它比一大把代码更有用,你需要一些了解程序状态的方法。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。 4. 每一行新代码必须至少执行一次 在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。 一般,我们想触发某种条件很难。但幸运的是,我们可以作弊。例如,数据的错误处理可以通过临时拼写错一个列名来触发。或者,一个if语句可以暂时颠倒过来(从 if error 变成 if not error),这样来触发那些平时很难触发的条件,这样只是为了确定代码是否正常运行和它会出现什么结果。 有时,我发现有一些行代码永远都不会被运行。当我们做代码检查是它看起来没有什么问题,但就是不工作。你要避免这样的尴尬状况,如果你想你的每一行新代码都会被执行。 5. 在整体测试之前先进行模块测试 先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。 6. 所有事情所花费的时间总是比你预期的要长 特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。并且,开发软件时碰到各种意想不到的问题是非常常见的。一个简单的合并操作会导致一系列小bug,一次框架升级意味着一些函数必须改变或者一些API不按照你想象的那样工作。 Hofstadter Law( 霍夫施塔特定律)其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了 Hofstadter Law( 霍夫施塔特定律)。 7. 先了解现有的代码 大多数的编码都需要以某种方式改变现有的代码。即使是新功能,也需要适应现有的程序。所以,在你加进去新的内容前,首先需要了解当前的解决方案。否则,你一不小心就很有可能会打破现有的功能。这意味着,阅读代码和编写代码都是必要的技能。这也是为什么看似微小的变化仍可能需要很长时间才能解决的原因之一,因为你首先必须了解上下文。 8. 阅读和运行代码 幸运的是,对于理解代码,我们有两种互补的方法。你可以阅读代码,也可以运行代码。运行代码的确是个非常棒的好方法。所以,请确保充分利用这两种方法。 故障排除 9. Bug 总是难免的 我不喜欢那些宣称软件开发可以“一蹴而就”的高谈阔论。不论你再怎么努力,bug总是难免的(BUG的定义基本上是:“我们没有想到”)。最好能够做成可以快速故障排除、修复bug和部署修复的系统。 10. 解决故障报告 每个开发人员都应该花时间去处理来自客户的故障报告,并修复bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。不要错过这些好处。 11. 重现问题 修复bug的第一步就是重现问题。然后你得确保修复之后,问题能够彻彻底底地消失。这样一个简单的规则,可以确保你不会误将非问题当作是问题,并确保解决方案真的能够奏效。 12. 修复已知错误,然后再看看有没有其他不对的地方 有时候,可能同时存在着几个不同的问题。它们之间的互相作用,可能会让你毫无头绪,束手无策。不要纠结于搞清楚发生了什么,先去解决所有已知的问题,然后再看看还有什么不对的地方。 13. 没有巧合 在测试和故障排除时,不要相信会出现什么巧合。就像你改变了定时器的值,那么就会改变系统重启的频率。所以一切都并非是巧合。添加新功能,另一个不相干的功能变慢了?这绝对不是巧合。相反,是你应该仔细调查的内容。 14. 关联时间戳 在故障排除时,事件的时间戳可以作为你的好帮手。寻找偶数增量。例如,如果系统重启了,并且刚刚发出过一个3000毫秒左右的请求,那么可能是触发了某个定时器,才导致出现重启的动作。 合作 15. 面对面的交流最有效 当我们需要讨论如何解决问题时,那么面对面的交流比视频、打电话和电子邮件都要好。我经常在与同事讨论完后发现一个令人兴奋的更好的方案。 16. 小黄鸭调试法 遇到你绞尽脑汁也解决不了的问题时,不妨找一个同事,然后将问题解释给他们听。很多时候,当你在叙述时,即使你的同事一言不发,你可能也会突然灵光乍现找到问题的关键。听起来像魔法,但是这经常起作用。详情看这篇文章:《小黄鸭调试法,每个程序员都要知道的》 17. 问问题 阅读和运行代码往往非常有助于指出代码的目的和它的工作原理。但是如果你有机会咨询那些更为了解的人(例如原来的程序员),那么千万不要错过。继续问他们具体的问题、后续的问题,这几分钟内给你的信息可能是你需要花费好几天才能获得的。 18. 共享荣誉 不要贪图荣誉,该是谁的就是谁的。例如:“Marcus 想出了这个主意……”(如果真是他想的话),而不要说“我们想出的……”。大胆的说出那些帮助过你或者贡献过力量的人的名字。 其他 19. 动手去做 如果你不知道某种编程语言功能的工作原理,那么不妨写一个小程序来理解它是如何工作的。这同样适用于测试你正在开发的系统。如果我将参数设置为-1,会发生什么?当我在重启系统时,如果服务当掉,会发生什么?以此来研究它的工作原理。经常做这些会帮你发现bug,在此同时也会加深你的系统工作的了解。 20. 带着问题睡觉 如果你正在解决一个很难的问题,那么不妨带着问题睡觉。有科学研究表明,这样做虽然你表明上并没有在主动思考,但你的潜意思却这么做了。其结果就是,第二天再去研究问题,解决方案已经呼之欲出了。 21. 改变/跳槽 不要害怕角色变化。和不同的人共事,开发不同的产品,感受不同的公司文化是非常有意思的。在我看来,太多的人只是被动地呆在同样的地方年复一年的工作,只有在被迫的情况下才去改变。 22. 活到老学到老 软件行业的一大魅力就是我们随时有机会可以学到新的东西。你可以尝试不同的编程语言和工具,阅读软件开发的书籍,接受MOOC课程。相信我,量变才能达到质的飞跃,这些小小的学习积累,终有一天会大大地提高你的知识和能力。 […]

龙生   04 Jul 2016
View Details

将 Chrome 变成开发利器,开发者们在用这些插件

Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择。而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率。我们就整理了十款开发者常用的 Chr Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择。而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率。我们就整理了十款开发者常用的 Chrome 插件推荐给大家,相信能够在你的开发中助你一臂之力。 1. 掘金 Chrome 插件:帮你发现干货 不管你是开发者、设计师还是产品经理,想必每天都需要阅读大量的行业相关文章,这就需要我们浏览大量的互联网站点去寻找我们需要的内容。抛开繁复的筛选成本不说,「比特级」的内容都会压得你喘不过气来。 掘金为了解决这个问题,开发了掘金 Chrome 插件,掘金 Chrome 插件聚合了国内外优质的互联网站点内容,在节省你的筛选成本的同时,帮你发现好内容。 2. Postman:强大的 API & HTTP 请求调试工具 相 信 Postman 对于掘金上的各位开发者来说,一定不会陌生,这是一款强大的 API & HTTP 请求调试工具,Postman 不仅可以调试简单的 HTML、CSS 以及脚本等简单的网页基本信息,这款 Chrome 插件甚至还能发送几乎所有的 HTTP 请求,可谓是 Web 开发者的一大利器。 3. BuiltWith Technology Profiler:你的网站,用了什么技术栈? 作为开发者,对于友商网站所使用的技术栈想必也充满了许多好奇心,有没有工具能够帮你完成这项工作呢?答案就是 Chrome 插件 BuiltWith Technology Profiler,它能够帮你分类呈现当前访问网站的技术栈组成,实乃探索友商之利器。 当然,同类产品中,你也可以使用 Wappalyzer 这一款 Chrome 插件。 4. Octotree:你的 GitHub 文档库 GitHub 现有的目录层级形式,在查看来自不同层级文件夹的文件的时候,显得似乎不是很方便,Octotree 这款 Chrome 插件能够让你通过文档库的方式管理、查看你的 GitHub 仓库,简单直观的同时,也方便你进行文件之间的跳转操作。 5. GitHub Awesome Complete:属于 GitHub 的 「Alfred」 在 GitHub 搜索仓库或者项目的时候,你会怎么做?相信大部分人的步骤都是一样的: 在搜索框输入关键字后按回车键 在搜索结果中找到相应结果,点击进入相应页面 有没有更简单快捷的操作方法?答案是 GitHub Awesome Complete 这款 Chrome […]

龙生   01 Jul 2016
View Details
1 193 194 195 282