Gulp 前端的扁平化管理艺术

前端开发一直处于不断地更新和迭代的苦逼状态,而前端的工程管理也各式各样,以前我有使用过 Grunt 进行管理一些 css、js,但最近 Gulp 的横空出世,像一股清流,让前端的世界变得异常清晰起来。我也开始从 Grunt 转向 Gulp 的怀抱。

前端的发现一直是处于快速的发展,各种第三方库层出不穷,这让我们有种疲于奔命感觉,项目也不断地在重构中。2014 ~ 2015年期间,NodeJS 的火爆现象促使了前端各项管理工具的繁荣发展,涌现了各种管理工具,例如:webpackgruntgulp 等等。

项目一开始是使用 grunt 来管理 scss 的编译和生成,后面逐渐地将 gulp 替代了 grunt,其实两者的处理方式是一样的,但 gulp 相对于 grunt 还是比较的活跃,而且更具有新时代的气息,故改用 gulp,免除后续更新迭代和维护难问题。项目是使用 golang 语言中的 beego web 框架进行开发的,所以 gulp 只是单纯地用来管理 scss、js。

window.open不能打开新标签问题

什么情形下是不可以的呢?

我发现在 angularjs 中的 $http.get/put/post 使用就会被浏览器拦截,经过多次尝试发现异步请求的都会被当成是弹出窗口,会被拦截。 但是直接使用 buttonclick 事件则是在新的标签页打开的。

故在异步请求中不能使用 window.open 打开一个新的标签页,解决方案是:

1
2
3
4
5
6
7
8
9
var win=window.open(""); //预先打开一个新的标签页

$http.get('').success(function(data, status, headers, config){

win.location.href=""; //需要打开的超链接

}).error(function(data, status, headers, config){
})

iOS 开发中的新手村任务

当一不小心成为程序员一枚,那难免将会面临着科技界各种日新月异的变化,而这种变化一不小心就会形成风暴,那我们在这波涛汹涌的代码世界,如何才能掌舵好属于自己的小船呢?只有不断地学习,才能看清前方那一缕阳光。

初始化角色

如同游戏,首先需要初始化一个属于自己的角色,在初始化角色之前,我们必须了解这个角色的技能和作用,方便我们后续有效地使用。

Objective-C是一种通用、高级、面向对象的编程语言。它扩展了标准的ANSI C编程语言,将Smalltalk式的消息传递机制加入到ANSI C中。目前主要支持的编译器有GCC和Clang(采用LLVM作为前端)。

Objective-C的商标权属于苹果公司,苹果公司也是这个编程语言的主要开发者。苹果在开发NeXTSTEP操作系统时使用了Objective-C,之后被OS X和iOS继承下来。现在Objective-C是OS X和iOS操作系统、及与其相关的API、Cocoa和Cocoa Touch的主要编程语言。

上面是来自于维基百科的解析,可以了解到 Objective-C 是 iOS 开发的主要语言,如果我们要在 iOS 的是世界里过关斩将的话,必须掌握这门基础语言。

如何知道自定义字体的名称

在IOS开发中难免会使用到自定义的字体,但所添加的字体资源名称不是程序中所需要的fontName,那如何快速知道自已所添加自定义字体的fontName呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
NSArray *familyNames =[[NSArray alloc]initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indexFamily, indexFont;

for(indexFamily=0;indexFamily<[familyNames count];++indexFamily){
fontNames =[[NSArray alloc]initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indexFamily]]];

for(indexFont=0; indexFont<[fontNames count]; ++indexFont){

NSString *fNames=@"Thonburi-Bold,Thonburi,Thonburi-Light,SnellRoundhand-Black,SnellRoundhand-Bold,SnellRoundhand,AcademyEngravedLetPlain,MarkerFelt-Thin,MarkerFelt-Wide,Avenir-Heavy,Avenir-Oblique,Avenir-Black,Avenir-Book,Avenir-BlackOblique,Avenir-HeavyOblique,Avenir-Light,Avenir-MediumOblique,Avenir-Medium,Avenir-LightOblique,Avenir-Roman,Avenir-BookOblique,GeezaPro-Bold,GeezaPro,GeezaPro-Light,ArialRoundedMTBold,Trebuchet-BoldItalic,TrebuchetMS,TrebuchetMS-Bold,TrebuchetMS-Italic,ArialMT,Arial-BoldItalicMT,Arial-ItalicMT,Arial-BoldMT,Marion-Regular,Marion-Italic,Marion-Bold,Menlo-BoldItalic,Menlo-Regular,Menlo-Bold,Menlo-Italic,MalayalamSangamMN,MalayalamSangamMN-Bold,KannadaSangamMN,KannadaSangamMN-Bold,GurmukhiMN-Bold,GurmukhiMN,BodoniSvtyTwoOSITCTT-BookIt,BodoniSvtyTwoOSITCTT-Bold,BodoniSvtyTwoOSITCTT-Book,BradleyHandITCTT-Bold,Cochin-Bold,Cochin-BoldItalic,Cochin-Italic,Cochin,SinhalaSangamMN,SinhalaSangamMN-Bold,HiraKakuProN-W6,HiraKakuProN-W3,IowanOldStyle-Bold,IowanOldStyle-BoldItalic,IowanOldStyle-Italic,IowanOldStyle-Roman,DamascusBold,Damascus,DamascusMedium,DamascusSemiBold,AlNile-Bold,AlNile,Farah,Papyrus-Condensed,Papyrus,Verdana-BoldItalic,Verdana-Italic,Verdana,Verdana-Bold,ZapfDingbatsITC,DINCondensed-Bold,AvenirNextCondensed-Regular,AvenirNextCondensed-MediumItalic,AvenirNextCondensed-UltraLightItalic,AvenirNextCondensed-UltraLight,AvenirNextCondensed-BoldItalic,AvenirNextCondensed-Italic,AvenirNextCondensed-Medium,AvenirNextCondensed-HeavyItalic,AvenirNextCondensed-Heavy,AvenirNextCondensed-DemiBoldItalic,AvenirNextCondensed-DemiBold,AvenirNextCondensed-Bold,Courier,Courier-Oblique,Courier-BoldOblique,Courier-Bold,HoeflerText-Regular,HoeflerText-BlackItalic,HoeflerText-Italic,HoeflerText-Black,EuphemiaUCAS,EuphemiaUCAS-Bold,EuphemiaUCAS-Italic,Helvetica-Oblique,Helvetica-Light,Helvetica-Bold,Helvetica,Helvetica-BoldOblique,Helvetica-LightOblique,HiraMinProN-W6,HiraMinProN-W3,BodoniOrnamentsITCTT,Superclarendon-Regular,Superclarendon-BoldItalic,Superclarendon-Light,Superclarendon-BlackItalic,Superclarendon-Italic,Superclarendon-LightItalic,Superclarendon-Bold,Superclarendon-Black,DiwanMishafi,Optima-Regular,Optima-Italic,Optima-Bold,Optima-BoldItalic,Optima-ExtraBlack,GujaratiSangamMN-Bold,GujaratiSangamMN,DevanagariSangamMN,DevanagariSangamMN-Bold,AppleColorEmoji,SavoyeLetPlain,Kailasa,Kailasa-Bold,TimesNewRomanPS-BoldItalicMT,TimesNewRomanPSMT,TimesNewRomanPS-BoldMT,TimesNewRomanPS-ItalicMT,TeluguSangamMN,TeluguSangamMN-Bold,STHeitiSC-Medium,STHeitiSC-Light,AppleSDGothicNeo-Thin,AppleSDGothicNeo-SemiBold,AppleSDGothicNeo-Medium,AppleSDGothicNeo-Regular,AppleSDGothicNeo-Bold,AppleSDGothicNeo-Light,Futura-Medium,Futura-CondensedMedium,Futura-MediumItalic,Futura-CondensedExtraBold,BodoniSvtyTwoITCTT-Book,BodoniSvtyTwoITCTT-Bold,BodoniSvtyTwoITCTT-BookIta,Baskerville-Bold,Baskerville-SemiBoldItalic,Baskerville-BoldItalic,Baskerville,Baskerville-SemiBold,Baskerville-Italic,Symbol,STHeitiTC-Medium,STHeitiTC-Light,Copperplate,Copperplate-Light,Copperplate-Bold,PartyLetPlain,AmericanTypewriter-Light,AmericanTypewriter-CondensedLight,AmericanTypewriter-CondensedBold,AmericanTypewriter,AmericanTypewriter-Condensed,AmericanTypewriter-Bold,ChalkboardSE-Light,ChalkboardSE-Regular,ChalkboardSE-Bold,AvenirNext-MediumItalic,AvenirNext-Bold,AvenirNext-UltraLight,AvenirNext-DemiBold,AvenirNext-HeavyItalic,AvenirNext-Heavy,AvenirNext-Medium,AvenirNext-Italic,AvenirNext-UltraLightItalic,AvenirNext-BoldItalic,AvenirNext-Regular,AvenirNext-DemiBoldItalic,BanglaSangamMN,BanglaSangamMN-Bold,Noteworthy-Bold,Noteworthy-Light,Zapfino,TamilSangamMN,TamilSangamMN-Bold,Chalkduster,ArialHebrew-Bold,ArialHebrew-Light,ArialHebrew,Georgia-BoldItalic,Georgia-Bold,Georgia-Italic,Georgia,HelveticaNeue-BoldItalic,HelveticaNeue-Light,HelveticaNeue-UltraLightItalic,HelveticaNeue-CondensedBold,HelveticaNeue-MediumItalic,HelveticaNeue-Thin,HelveticaNeue-Medium,HelveticaNeue-ThinItalic,HelveticaNeue-LightItalic,HelveticaNeue-UltraLight,HelveticaNeue-Bold,HelveticaNeue,HelveticaNeue-CondensedBlack,GillSans,GillSans-Italic,GillSans-BoldItalic,GillSans-Light,GillSans-LightItalic,GillSans-Bold,Palatino-Roman,Palatino-Italic,Palatino-Bold,Palatino-BoldItalic,CourierNewPSMT,CourierNewPS-BoldMT,CourierNewPS-ItalicMT,CourierNewPS-BoldItalicMT,OriyaSangamMN,OriyaSangamMN-Bold,Didot-Bold,Didot-Italic,Didot,DINAlternate-Bold,BodoniSvtyTwoSCITCTT-Book";

if ([fNames rangeOfString:[fontNames objectAtIndex:indexFont]].location==NSNotFound) {

NSLog(@"Font name: %@",[fontNames objectAtIndex:indexFont]);
}


}

}


这个方法可以过滤掉系统自带的字体,只打印所添加的自定义字体名称

Git分支的学习

git的分支是在git的使用过程中不可避免的,所以简单学习下git的分支的经常使用到的方法

git 基本操作

  1. 建立本地login分支
    1
    git checkout -b login
  2. 切换回本地master分支
    1
    git checkout master
  3. 合并分支login
    1
    git merge login
  4. 删除分支login
    1
    git branch -d login
  5. 可视化合并工具
    1
    git mergetool