我的2016

###2016年我30岁 ###对我来说这是人生中重要的一年: - ####在拿到2015年度十佳支局长称号后,放弃了工作6年的国企单位,要特别感谢家人的理解和支持。郑渊洁说过「铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃」,我想成为后者;
- ####带着一身互联网编程的本领来到了一家工业公司,希望携手一起让「互联网+」与「工业4.0」碰撞出智能的火花。到目前为止,很享受在新公司的工作;

- ####创建了自己的个人网站 [www.hexcode.cn](https://www.hexcode.cn) ,网站所有代码自己编写,已开源到 [Git@OSC](https://git.oschina.net/newflydd/jblog),并收到69个STAR;
- ####第一次出差去了南方沿海城市:厦门、泉州、深圳、东莞,虽然是公务,但待的时间很长,充分体验了中国南方的风土人情。十一黄金周跟老婆去浙大和阿里巴巴,看着大都市年轻人忙碌的身影,让我充满希望和活力;



- ####跟老婆一起体会了整整一年初为人父人母的不容易,宝宝很会闹。不要求他今后是个听话的孩子,但求他有自己的爱好,并能为之追求一生,因为那将会是很幸福的;
- ####一如既往地爱着斑马军团,今年的联赛直播看的比往年都要多。黑白相间的尤文不是最强的队伍,但她的气质就是那么让人着迷,每一名尤文队员的眼中,都能看到对足球的享受和热爱,不信?你看看布冯就懂了;
###致:即将到来的2017 ####2017年,有一个愿望是结识更多的,对纯粹的技术仍然有热情的朋友,对Java,C,C++,Qt,Python,Node.js,Arduino,Raspberry或其他一切计算机技术热爱的朋友请 [跟我联系](mailto:newflydd@189.cn),互相交流,相互学习。 ####古人说:"为者常成,行者常至"。即将来临的2017年,我会继续实践自己的理想。学习一门新的语言,在智能硬件领域有所涉猎,这是两个小目标,还会有更多美好的事情即将发生。
###最后,在平安夜,我想跟着尤文合唱团一起唱: ###We wish you a Merry Christmas,We wish you a Merry Christmas,And a Winning New Year! ####祝所有我的朋友们,圣诞快乐,新年快乐!

系统配置备忘录,适用于全栈工程师

sublime

Install in LInux

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

Package Control

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

插件:

  • Emmet : 快速编写HTML
  • jQuery : jQuery代码提示
  • docBlockr : 快速注释
  • ConvertToUTF8 : 将其他任意编码格式转成UTF-8
  • SublimeCodeIntel: 多种语言代码提示
  • Alignmetn: 代码对齐
  • CoolFormat: 代码格式化,非常方便,使用方法:命令行:cq
  • IMESupport: 输入法跟随
  • 主题:https://github.com/kkga/spacegray
  • TODO:https://github.com/jonathandelgado/SublimeTodoReview

    build system:

    cpp2exe:
          {
              "encoding": "utf-8",
              "working_dir": "${file_path}",
              "cmd": ["g++", "-std=c++11", "-I", "C:\\MinGW\\include", "-Wl,--enable-stdcall-fixup", "-o", "${file_path}/${file_base_name}.exe", "${file}", "${file_path}\\ncapi32.dll"],
              "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
              "working_dir": "${file_path}",
              "selector": "source.c",
               "shell": true,
              "variants":
              [
                 {
                      "name": "Run",
                      "working_dir": "${file_path}",
                      "cmd": ["cmd","/C","start","cmd", "/C", "${file_base_name}.exe &pause"]
                 }
              ]
          }
    
    cpp2dll:
          {
              "path": "C:\\MinGW\\bin",
              "cmd": ["g++", "-std=c++11", "-m32", "-static", "-I", "C:\\MinGW\\include", "-shared", "-Wl,--kill-at,--enable-stdcall-fixup", "-o", "${file_path}/${file_base_name}.dll", "${file}", "${file_path}\\ncapi32.dll"],
              "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
              "working_dir": "${file_path}",
              "selector": "source.c",
               "shell": true,
          }
    

    Go:

    {
    "encoding": "utf-8",
    "working_dir": "${file_path}",
    "cmd": ["go", "build"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",
     "shell": true,
    "variants":
    [
       {
            "name": "Run",
            "working_dir": "${file_path}",
            "cmd": ["cmd","/C","start","cmd", "/C", "${file_base_name}.exe &pause"]
       },{
             "name": "Test",
             "working_dir": "${file_path}",
             "cmd": ["go", "test"],
       }
    ]
    }
    
    快捷键:
          删除一行:
          { "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} },
    
License
----- BEGIN LICENSE -----
eldon
Single User License
EA7E-1122628
C0360740 20724B8A 30420C09 6D7E046F
3F5D5FBB 17EF95DA 2BA7BB27 CCB14947
27A316BE 8BCF4BC0 252FB8FF FD97DF71
B11A1DA9 F7119CA0 31984BB9 7D71700C
2C728BF8 B952E5F5 B941FF64 6D7979DA
B8EB32F8 8D415F8E F16FE657 A35381CC
290E2905 96E81236 63D2B06D E5F01A69
84174B79 7C467714 641A9013 94CA7162
------ END LICENSE ------

JAVA

JDK8u162 Linux版下载镜像

Python

Python3.6下载镜像

Chrome

Chrome64.0 Linux deb

Chrom SwitchyOmega 代理插件

http://files.hexcode.cn/SwitchyOmega_Chromium.crx

Eclipse:

尝试放弃MyEclipse,直接使用免费纯净的eclipse J2EE版,安装gralde插件一样好用,自带Git。

JetBrains全家桶

JetBrains全家桶可以使用edu信箱免费申请授权,联系自己的大学老师,或者学弟学妹共享一下吧。

(Qt + MSVC) & (Qt + MinGW) :

windows下推荐两个都装,Qt5.7下WebEngine组件需要用MSVC编译,其他场景推荐使用MinGW构建。
QtCreater的配置主题为:myqttheme,放置到D:\Qt\Qt5.7.0\Tools\QtCreator\share\qtcreator\styles路径即可。

Sqlite:

SQLiteExpertPers

MySQL:

客户端:MysqlFront + Navicate,前者简洁,清晰;后者稳定。

SSH客户端:

MobaXterm

C单片机:

Keilu5 + Stc ISP6.85

Win10资源管理器标签化:

以前用Clover,高分屏支持不好,而且广告越来越烦人。
改用QTTabBar了,非常好用,只不过作者已经多年没更新了。
下载镜像

Android Studio:

百度软件有镜像,直接下载。

WPS:

绿色精简无广告纯净版

截屏录屏:

picpick + LICEcap,前者截屏,后者录制GIF

快速启动:

Listary

CMD替代:

CMDER

邮件客户端:

网易邮箱大师 可以接受Gmail联系人,日历,非常便捷

热键管理,非常实用,自己写热键配置,AHK:

AutoHotKey

截图

snipaste
picpick

FTP

filezilla FTP server
flashfxp PJ

下载软件,替代迅雷

FDM

桌面图标整理

以前用Fences,桌面划分成一块一块的,后来觉得依然很乱,而且一点也不cool。
Fences新版支持把磁盘中某个文件夹的内容全部暴露在桌面上,看上去挺好的功能,其实会导致桌面更乱。
Fences收费。
现在完全投入Rolan的怀抱:Rolan
桌面就一张图片,所有图标都去掉了,集中在贴边的Rolan中管理。

VNC

UltraVNC

PDF

SumatraPDF

KEIL CoolFormater Tool

keil.zip

ISSUE: 我在使用JNI时碰到java.lang.UnsatisfiedLinkError的解决方法

在使用JNI时遇到`java.lang.UnsatisfiedLinkError`,这是很常见的。 1. 首先检查dll有没有放到相应路径,比较保险的路径是JRE安装目录的bin文件夹,这个路径是必然检索到的。 2. 其次检查dll所需要的dll是否齐全,你自己用JNI调用的dll有可能调用了其他若干个dll,这些dll都要放到JRE/bin目录中去。 3. g++编译时使用的32位还是64位编译方式要正确,如果你的JRE是64位的,你很难能够顺利使用32位编译出来的dll,大部分底层dll都是32位的,虽然现在操作系统大多是64位的,如果你用JNI的话,还是建议你JRE用32位的吧。 4. g++编译时必须要加`-Wl,--kill-at`参数,取消编译出来的函数的带@符号,这样才能顺利的被JAVA调用。 5. cpp代码中,被JAVA调用的函数名要随JAVA包名同步改变,我就经常JAVA代码里面改动了使用JNI的Class的包名,忘记改CPP中头文件的函数名定义,导致用JNI死活调用不了,能折腾好久才想起来函数名要跟包名类名同步对应。
丁丁生于 1987.07.01 ,30岁,英文ID:newflydd
  • 现居住地 江苏 ● 泰州 ● 姜堰
  • 创建了 Jblog 开源博客系统
  • 坚持十余年的 独立博客 作者
  • 大学本科毕业后就职于 中国电信江苏泰州分公司,前两年从事Oracle数据库DBA工作,两年后公司精简技术人员,被安排到农村担任支局长(其本质是搞销售),于2016年因志向不合从国企辞职,在小城镇找了一份程序员的工作。
  • 在 Git OSChina 上积极参与开源社区
  •