DosLin's Blog

什么都略懂一点,生活更美好一些

前言

  • 以下内容不牵涉 Git 的内部实现原理,阅读正文将花费您大约15分钟。
  • 文中的所有 Git 命令省略了参数,完整调用请查阅官方文档。
  • 本文基于一次组内分享的内容整理,希望对各位有所帮助。

作为开发者,使用 Git 作为项目的代码控制系统已经是必备技能了(当然,还有本文的MarkDown),而日常工作中的你是否只停留在无尽的 pullpush 中呢?

下面就来介绍 Git 中的几种实用命令,相信会对你今后可能遇到的实际工作场景带来实质性的效率提升。

介绍命令之前,首先我们先需要了解下 Git 中操作区域的概念。

操作区域

Git 的操作区域和 vi 中的缓冲区的概念很类似,不同的 Git 命令会在不同的操作区域中工作。

操作区域

如图所示,Git的 add 操作会将文件的修改记录保存在暂存区,之后进行的 commit 操作会将暂存区的修改内容全部提交到历史区,最后进行的 push 操作将会把本地的操作记录推送到远程仓库中去。
之所以此处远程库的背景色使用了暗色调,是因为推送到远程库的代码是需要你“负责”的,一旦发布即是历史的诞生,请对 push 的操作保持敬畏和责任感。同时这里也牵涉到 Git 中提交哲学的概念。

Read more »


说明和前提

1、由于通过命令react-native init初始化的React Native(以下简称RN)项目结构与原生项目有区别,所以不能单纯直接在已有项目的根目录下运行该命令。

2、RN需要Android4.1或以上的环境,故集成RN的Android项目的minSdkVersion需设置为API16或以上。

3、本机安装NPM支持:
新版的RN依赖都将发布在NPM(包管理工具,如同Maven仓库)中,故需安装NPM。

4、本文安装环境为MAC,Windows或Linux上的命令差异请参考官方文档

集成步骤

1. 安装NPM

之后于同时需要NodeJS服务器,故只需安装NodeJS,NPM会随同安装。

1
2
brew install node
brew install watchman
Read more »

有时候会出现github客户端在Mac下点击Clone in Desktop时会带你去GitHub客户端的下载页面。

根据官方写明的调用原理,只要确保
在浏览器中访问https://ghconduit.com:25035/status能正常返回
{"capabilities":["status","unique_id","url-parameter-filepath"],"running":false,"server_version":"5"}
类似的信息即可。

如果访问失败,可以通过以下几种形式定位问题:

  • 进程清单中是否有Github Conduit
  • 浏览器是否开了代理;
  • 尝试在/etc/hosts中加入127.0.0.1 ghconduit.com后重新访问。

当链接正常时刷新页面重新点击Clone就能生效了。

原文地址-Sam Hughes

翻译水平有限,如有谬误,欢迎评论斧正或者Pull Request

正则表达式(“regexes”)即增强查找/字符串替换操作。当在文本编辑器中编辑文字时,正则表达式经常用于:

  • 检查文本是否包含一个给定的模式
  • 查找任何匹配的模式
  • 从文本中拉取信息(比如截断)
  • 修改文本
Read more »

安装Homebrew

安装wxWidgets之前,推荐使用Homebrew管理软件包(当然,如果你熟悉MacPorts的话,也可以用它安装wxWidgets)。

在终端中键入以下命令:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

安装wxWidgets

搞定Homebrew,现在安装wxWidgets库了。
输入:

brew install wxwidgets
//或者brew install wxmac

Homebrew将会自动为你下载好os x环境下的wxWidgets,免去编译源码的步骤。安装路径为/usr/local/Cellar

Read more »

Uploadify作为一个比较常用的页面上传控件,最近也是在上面遇到了一个问题。即使用了该控件的页面在IE6下刷新会出现下图错误:

调查结果是因为IE6下该控件的Object未能销毁的缘故引起的页面报错document.getElementById("SWFUpload_0").SetReturnValue("<undefined/>");和内存飙高。所以解决办法就是可以在每次刷新页面前进行对象释放。由于dwz也使用了该控件,我们可以在每次进行标签操作时进行该动作,在dwz.navTab.js文件的_switchTab函数加入如下语句:

_switchTab: function(iTabIndex){
    for(var i=SWFUpload.movieCount; i>=0; i--) { // 手动释放SWFUpload对象,修正IE6下报错问题
        if(SWFUpload.instances["SWFUpload_"+i]){
            SWFUpload.instances["SWFUpload_"+i].destroy();
        }
    }
    // ... 
},

参考资料:
(1)http://blog.csdn.net/zhichao2001/article/details/9468023
(2)http://my.opera.com/justnewbee/blog/fix-swfupload-destroy-ie-js-error

去年写了一个地图组件worldMap-js ,因为用JS实现的,众所周知,IE6-8对JS的执行效率实在让人捉急,而国内浏览器中IE占用率又是个大头,所以萌生了用Flash重现实现这个组件的念头,使用Flex编写,目前还不完善,大体实现了地图的绘制和提示信息的展示,绘制下级地图的功能还没完成,同时MapData目前只有中国地图。

Read more »

需求描述

在实际开发中,我们常常需要应对多类环境,针对不同的环境来更改相应的配置,比如常见开发环境、测试环境以及客户的实际部署环境。

因此我们会遇到下面的场景,在开发环境中数据源的获取方式是直连数据库,部署环境中需要连接的是JNDI,如何避免项目打包完每次人工更改配置文件的繁琐工作呢?

解决方案

通过引入Spring和Maven的profile特性来实现不同环境自动切换不同配置的功能。

Read more »

组件版本

替换步骤

###样式文件替换

定位dwz的themes/css下的core.css文件,在184行~216行中注释JTree样式。

提取zTree的样式文件zTreeStyle.css(位于css/zTreeStyle)及图标资源img文件夹。前者代码置于dwz的core.css的底部以防止dwz预定义的样式破坏zTree的样式。同时将img文件夹与core.css放在同一个文件夹下(themes/css/)。

###脚本文件替换与修改

找到DWZ的js文件夹下的dwz.tree.js文件,用zTree的js文件jquery.ztree.all-3.5.js中的内容替换(如果不需要zTree的excheck + exedit扩展,可以使用jquery.ztree.core-3.5.js)。

脚本内容替换完成后,需要修改dwz.ui.jsdwz.tree.js(现在它的脚本语句是zTree的):

  • dwz.ui.js

注释掉77行的调用jTree语句。

$("ul.tree", $p).jTree();
  • dwz.tree.js

1、树节点添加DWZ中的rel属性(添加DWZ中的external属性同理):

找到makeDOMNodeNameBefore方法(当前版本位于1112行),在html.push方法后添加:

if (node.rel) {
    html.push("' rel='", node.rel);
}

2、更改节点的默认Target为navTab

找到makeNodeTarget方法(当前版本位于1178行),return语句修改为return (node.target || "navTab");

Read more »

数据的存储位置会影响其读取速度,这个问题对于JavaScript来说相对简单,因为它只有四种基本的数据存储位置:

  • 直接量
  • 变量
  • 数组元素
  • 对象成员

一般来说,使用直接量和局部变量的访问速度快于数组项和对象成员的访问速度(除非浏览器内部刻意优化)。

管理作用域

###作用域链和标识符解析

每一个JavaScript函数都是Function对象的一个实例。而该对象拥有可编程访问的属性和不能通过代码访问的内部属性(仅供JavaScript引擎存取)。内部属性中的Scope包含的一个函数被创建的作用域中对象的集合称为函数的作用域链。

执行函数时会创建一个运行期上下文(execution context)的内部对象,每个运行期上下文对象都有自己的作用域链用于标识符解析。正是解析标识符时在作用域链中的搜索过程影响了性能。

###标识符解析的性能

一个标识符在运行期上下文的作用域链中位置越深,它的读写速度就越慢。因为全局变量总是存在于运行期上下文作用域链的最末端,因此读写全局变量较读写局部变量来说是慢的。

###改变作用域链

可通过with语句或try-catch语句中的catch子句临时改变作用域链。

###动态作用域

动态作用域只存在于代码执行过程中,因此无法通过静态分析(查看代码结构)检测出来。with语句、try-catch中的catch子句以及包含eval()的函数,都被认为是动态作用域。

###闭包,作用域和内存

当闭包被创建时,它的Scope属性初始化为上下文中的活动对象和全局对象。

当闭包被执行时,它的’Scope’属性中对了一个为闭包自身所创建的活动对象。所以要访问的标识符存在于作用域链第一个对象之后的位置,访问时导致性能损失。

Read more »
0%