代码 > 不错的rest后台框架ng-admin

2017-02-27

重建网站后台时决定了用rest api做接口。

本来这也是驾轻就熟的事情,突然想到之后会做一个展示型网站的骨架/demo代码,用比较通用的代码比较好。

比较了一番相应的代码,选择了这个。

能很快的通过一系列的js配置搭建出常用的后台,ng 1.x也不需要各种编译。

有清晰的文档,和不少的讨论,解决问题非常方便。

还需要什么更多的要求呢?

项目地址:https://github.com/marmelab/ng-admin/

截图:


代码 > sqlitebrowser,很不错的sqllit数据库编辑器

2017-01-21

用golang做微博机器人爬语料,玩了下linux编译windows程序,找了这个工具来处理sqlite数据库。

开源,免费,有中文,跨平台

简单操作,易学易用

总的说很不错

http://sqlitebrowser.org/

代码 > golang初印象

2017-01-16

作为一个从Mud机器人正儿八经开始写程序的人,不管是nodejs还是golang,地一个练手项目都选择了mud客户端。

用了下golang,不惊艳,很舒服。

基本上。golang给我的感觉就是一个静态语言版的脚本,或者直接点说,python.

用:=,不需要事先申明变量类型

用interface,实现了脚本语言最重要的ducklike

几块的编译速度,go run xxx.go有种在跑脚本语言的感觉。

强制格式到自动格式化代码。比python更进一步。

很少的关键字。

很适合脚本程序与兼学。

学习成本太低。

虽然还是有很多问题。

但这么多语言,重要的是能做什么,而不是不能做什么。不适合的场景,不用就行了。

代码 > 2017年初,整理下自己的技能树,要有所取舍

2017-01-15

按写过的代码量统计。

1.php,吃饭的家伙,除非改变自己的工作中心,不然不可能绕过去。保持并深入。

2js,同php.区别在于nodejs。就nodejs本身来说,不够喜欢,但胜在和浏览器同源,投入成本极低。保持并深入。

3.lua.可以说,从这个语言开始,是我玩票记录的开始。这个也是我玩票记录的典型。接触熟悉lua是因为当年写的hellua机器人。作为我一个不甚喜欢的语言,突然发现,我的代码量是我不喜欢的语言的排行榜啊。前两个是脏,但实用。lua是简陋。但轻巧。放弃中。

4.python。玩过票,做过gui,折腾过网页程序,写过运维程序。作为一个运维语言,还是少不掉。保持。

5.C。当年做一个别人的毕业设计。和hellua的mapper。以我的功底,能力,行业,没什么前途的。了解过,不擅长,放弃吧。

6.c#。折腾过mono+gtk,读过别人的源代码。放弃吧,能读懂就好。

7.shell脚本。这个也就那样。保持。

8.vb,vbs,logo。入门的东西,忘记就行了。

没怎么接触过,基本之看过一些代码或者做过helloword的语言

9.golang.写过一个helloword。感觉还是有一些有意思的点。深入。

10.c++好像接触过一点,好像又没接触过。不是这块料,放弃吧……

11.Java。太庞大。无力挑战。一直以来没什么好的映像,怎的要选,估计选c#的概率更高。放弃。

12.perl与我哲学不符。放弃

13.ruby。不喜欢rails....放弃。

 

总结:

深入3个语言 php,js,golang

保持python,shell。

真的有需要,可以考虑学习下c#/java

果然还是菜鸟技能树啊。

代码 > 不错的小玩意--我眼中的golang

2017-01-14

之前被v2ex上一篇热贴吸引,去研究了一下golang。

本身误以为golang是个值得花精力去学好的东西。可以写客户端,效率高,文件直接在一个包内,跨平台。

在部署好环境,写了helloworld后,又对自己想要的方向搜索了下。

结果发现,我虽然长得不美,但想得太美了。

golang完全不是这么回事。

做gui比nodejs还惨。效率和java打了几个来回还输了。都蛋疼到让我去搜索golang的意义了。

好在在洗澡时理清了思路。发现我从一开始纠错了。

Golang压根就不是一个什么通用开发语言,被设计出来本身就是用来做一个小工具。

它的作用只有两个

1.做服务。连网页或者爬虫都做不好,那是动态语言的优势。

2.做运维工具。

颇有静态语言版shell的概念。

他解决问题是

1.作为服务,而非运算能力的效率问题

2.方便部署。各种脚本语言,特别是自带包管理那一票,特别特别是某些2.x 3.x都不兼容语言,在各种环境(比如包管理以来特定版本某语言的centos,比如windows)。部署起来太麻烦了。这点上go太方便了。

3.标准化问题,基本就是个更严格,甚至连文件夹怎么放都限制了的某语言。

既然只是一个做服务/运维的小工具,所以突出易学就很正常了。

难怪看到的资料,大部分都是替换了某语言,他跟就是对着某语言的7寸打的啊。

这对于只掌握一门语言来谋生的 “程序员“来说,应该是痛苦而难以接受的吧……

代码 > 我的前端工具

2016-12-15

不定期更新

工具
Vscode编辑器:
https://code.visualstudio.com/
微软出品的编辑器

特效库

Pixi.js
http://www.pixijs.com/
高效率的Canvas/webgl库 

工具库

async
https://github.com/caolan/async
异步控制/处理库

underscore
http://underscorejs.org/
常用操作库 

在线工具

Staticfile cdn
https://www.staticfile.org/
七牛提供的cdn服务

代码 > koa,yield与co库

2016-11-16

目前我最欣赏的程序员是express的作者TJ。

最近准备用node js重写这个网站,发现TJ的新作koa似乎已经到了很使用的阶段,花了两小时研究了下。

刚开始看得是一头雾水。为什么koa demo 里的yield的用法和mdn的说法完全不同,为什么yeild这么特殊,这玩意到底什么鬼。

慢慢的理清了思路,找到了对的思路,才明白了过来。

不得不说,直介绍是什么,不说干什么用的文章到底有什么用……

首先,ES 6里引入了generator的概念.

通过代星号的函数可以常见生成器(特殊类)。

  1. 生成器上,有一段业务代码,
  2. 可以通过生成器生成函数(实例化类),调用可以执行生成器中的业务代码。
  3. 生成器中的代码依然不能执行异步代码,遇到 yield会中断
  4. 本身这一切不怎么神奇,但TJ大神写了个神奇的库叫CO。CO库可以直接调用生成器,执行业务代码。业务代码的yield只要跟的参数是promise或者thunk包装的异步函数,就能在异步结束后在异步代码中继续执行下面的代码,甚至可以有返回值。
  5. 这样,配合特殊格式的异步函数,把yield在结构上当成了类似call方法的同步函数。整个业务代码可以和同步代码一样有极强的可读性。异步代码尽可能简化,可以用其他库打包。
  6. 最后,代码看着像函数化的同步代码,用着也像。
koa其实就是个基于CO重构的express。
 
其实每个做过Node js的程序员,或多或少的都会写过一些类似的流程控制代码。当然,无疑TJ是写的最好的,考虑的最多,用的最广泛。
 
我真是爱死了这个设计出生的程序员了。

关于co可以参考 http://web.jobbole.com/85901/

代码 > 开始使用visual studio code

2016-09-06

这两天偶然用了下vs code。发现个方面的感觉都非常棒。体验很好。对比了一下作netbeans和atom发现不论速度/外观上都是目前最优秀的。决定花一段时间习惯下这个编辑器。

代码 > phonegap/cordova解决android下viewport无效的问题

2016-02-22

环境:linux debiantesting,cordova 6.0.0,android sdk 23

今天公司有需要,拿cordova封装一个app,结果安卓浏览器一跑一口老血喷出来了,viewport无效。

赶紧一顿搜索,装插件,依旧蛋疼。

只能老实怕代码。

总的来说,问题是需要调用android sdk的WebSettings的setUseWideViewPort和setLoadWithOverviewMode方法。

对代码连蒙带爬,大概整理出了头绪。

大部分相关代码都在platforms\android\CordovaLib\src\org\apache\cordove下。

 

  • 实际代码由src\io\cordova\hellocordova\MainActivity做入口,继承自CordovaActivity
  • 核心代码由CordovaActivity实现。CordovaActivity的appview指向了CordovaActivity。
  • CordovaWebView是接口类,具体的业务逻辑都在CordovaWebViewImpl下。
  • 这个类是虚拟的,调用CordovaWebViewEngine这个借口来实现渲染。
  • 而CordovaWebViewEngine也是一个虚拟类,具体的是由engine下的SystemWebViewEngine来实现的。
  • 而SystemWebViewEngine有个public属性webview,是继承自android系统webview的SystemWebView。
  • 具体的webview可以由CordovaWebView的getview,调用SystemWebViewEngine方法取得。

 

好在我现在写代码也不怕麻烦,爬一串还算轻松……

具体修改肯定是修改src\io\cordova\hellocordova\MainActivity。

代码如下

package io.cordova.hellocordova;

import android.os.Bundle;
import org.apache.cordova.*;


import android.webkit.WebView;

public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);
    loadUrl(launchUrl);
    // Set by <content src="index.html" /> in config.xml

    view=(WebView) this.appView.getView();
    view.getSettings().setUseWideViewPort(true);
    view.getSettings().setLoadWithOverviewMode(true);
   //Add By jarlyyn.http://blog.jarlyyn.com
}
}

 

然后 cordova run android 一下,真机跑一下,为了让第一页也起效,把给location夹在了setTimeout 0里。收工。

话说我最讨厌的语言依次就是PHP,Javascropt,Java了。

现在居然越来越火,工作中碰到的越来越多,这是说明我没眼光么……

代码 > 解决react input框chrome无法输入中文的问题

2015-08-16

之前使用input框,value设为模型的值,发现无法输入中文。

研究了下。通过非托管的输入框组建,外带初始值设置解决这个问题。

也就是说,

<input onChange={this.change} value={this.state.model.v}>

改为

<input onChange={this.change} defaultValue={this.state.model.v}>

IE下并没有这个问题。感觉是输入法和chrome之间的问题。但是同时在linux下和win下都有这个问题。只能通过别的方式绕开了。