一个翻译github的脚本
把下面的代码另存为github.user.js, 然后拖拽到chrome的插件管理界面, 打开github就可以看到中文的github了
(function() {var url_has = function(str) {return location.href.indexOf(str) >= 0;}var $ = function(selector) {return document.querySelectorAll(selector);};var replace_dom = function(selector, num, attr, old_string, new_string) {var selector_str = selector;if (typeof selector == 'string') {selector = $(selector);}var rep = function(str) {str = str || '';if (typeof new_string == 'undefined') {for (var j in old_string) {str = str.replace(old_string[j][0], old_string[j][1]);}} else {str = str.replace(old_string, new_string);}return str;}if (num === 'each') {for (var i in selector) {selector[i][attr] = rep(selector[i][attr]);}} else if (selector.length && (num in selector) && (attr in selector[num])) {selector[num][attr] = rep(selector[num][attr]);}if (typeof selector_str == 'string') {setTimeout(function() {replace_dom(selector_str, num, attr, old_string, new_string);}, 1000);}};if (!url_has('github.com')) {return;}// 搜索框replace_dom($('.header-search-input'), 0, 'placeholder', 'Search GitHub', '全站搜索');// 翻译导航 Pull requests, Issues, Gistreplace_dom($('.header-nav a'), 2, 'innerHTML', 'Gist', '重点');// 首页的两个大按钮replace_dom($('.shelf-cta'), 0, 'innerHTML', 'Read the guide', '阅读指南');replace_dom($('.shelf-cta'), 1, 'innerHTML', 'Start a project', '开始一个项目');// 首页我贡献的replace_dom($('[role=navigation] h3'), 0, 'innerHTML', 'Repositories you contribute to', '你有贡献的库');// 首页我的仓库replace_dom($('#your_repos'), 0, 'innerHTML', 'Your repositories', '你的仓库');replace_dom($('#your_repos a'), 0, 'innerHTML', 'New repository', '新建仓库');replace_dom($('.repo-filter'), 0, 'innerHTML', 'All', '全部');replace_dom($('.repo-filter'), 1, 'innerHTML', 'Public', '公开');replace_dom($('.repo-filter'), 2, 'innerHTML', 'Private', '私有');replace_dom($('.repo-filter'), 3, 'innerHTML', 'Sources', '创建的');replace_dom($('.repo-filter'), 4, 'innerHTML', 'Forks', '克隆的');replace_dom($('#your-repos-filter'), 0, 'placeholder', 'Find a repository', '搜索仓库');// document.querySelector('.file-navigation i').innerHTML = '分支:';// 翻译提交时间replace_dom('relative-time,time-ago', 'each', 'innerHTML', [['minutes ago', '分钟前'],['an hour ago', '1小时前'],['hours ago', '小时前'],['a day ago', '一天前'],['days ago', '天前'],['a month ago', '1个月前'],['months ago', '个月前'],[/^on\s(\d+)\sJan/, '1月$1号'],[/^on\s(\d+)\sFeb/, '2月$1号'],[/^on\s(\d+)\sMar/, '3月$1号'],[/^on\s(\d+)\sApr/, '4月$1号'],[/^on\s(\d+)\sMay/, '5月$1号'],[/^on\s(\d+)\sJun/, '6月$1号'],[/^on\s(\d+)\sJul/, '7月$1号'],[/^on\s(\d+)\sAug/, '8月$1号'],[/^on\s(\d+)\sSep/, '9月$1号'],[/^on\s(\d+)\sOct/, '10月$1号'],[/^on\s(\d+)\sNov/, '11月$1号'],[/^on\s(\d+)\sDec/, '12月$1号']]);// 翻译提交时间replace_dom($('.commit-group-title'), 'each', 'innerHTML', [['Commits on', '提交时间: '],[/Jan\s(\d+)\,\s(\d+)/, '$2年1月$1号'],[/Feb\s(\d+)\,\s(\d+)/, '$2年2月$1号'],[/Mar\s(\d+)\,\s(\d+)/, '$2年3月$1号'],[/Apr\s(\d+)\,\s(\d+)/, '$2年4月$1号'],[/May\s(\d+)\,\s(\d+)/, '$2年5月$1号'],[/Jun\s(\d+)\,\s(\d+)/, '$2年6月$1号'],[/Jul\s(\d+)\,\s(\d+)/, '$2年7月$1号'],[/Aug\s(\d+)\,\s(\d+)/, '$2年8月$1号'],[/Sep\s(\d+)\,\s(\d+)/, '$2年9月$1号'],[/Oct\s(\d+)\,\s(\d+)/, '$2年10月$1号'],[/Nov\s(\d+)\,\s(\d+)/, '$2年11月$1号'],[/Dec\s(\d+)\,\s(\d+)/, '$2年12月$1号']]);// 创建新仓库页面replace_dom($('.subhead-heading'), 0, 'innerHTML', 'Create a new repository', '创建一个新的存储库');replace_dom($('.subhead-description'), 0, 'innerHTML', 'A repository contains all the files for your project, including the revision history.', '一个存储库包含您的项目的所有文件,包括修改历史记录。');replace_dom($('.owner-reponame label'), 0, 'innerHTML', 'Owner', '所有者');replace_dom($('.owner-reponame label'), 1, 'innerHTML', 'Repository name', '仓库名称');replace_dom($('.with-permission-fields .my-3'), 0, 'innerHTML', 'Great repository names are short and memorable. Need inspiration? How about', '一个存储库包含您的项目的所有文件,包括修改历史记录。');replace_dom($('.select-menu-title'), 0, 'innerHTML', 'Choose another owner', '选择其他所有者');replace_dom($('[for=repository_description]'), 0, 'innerHTML', 'Description', '描述');// replace_dom($('.with-permission-fields .form-checkbox label :nth-child(3)'), 0, 'textContent', 'Public', '公开');replace_dom($('.with-permission-fields .form-checkbox .note'), 0, 'innerHTML', 'Anyone can see this repository. You choose who can commit.', '公开: 任何人都可以看到这个库。你可以选择谁能提交。');// replace_dom($('.with-permission-fields .form-checkbox label :nth-child(3)'), 0, 'textContent', 'Private', '私有');replace_dom($('.with-permission-fields .form-checkbox .note'), 1, 'innerHTML', 'You choose who can see and commit to this repository.', '私有: 您选择谁可以看到并提交到这个存储库。');// 版本库首页replace_dom($('.header-search-scope'), 0, 'innerHTML', [['This repository', '搜索当前仓库'],['This organization', '搜索当前组织']]);replace_dom($('.numbers-summary li:nth-child(1) a'), 0, 'innerHTML', 'commits', '次提交');replace_dom($('.numbers-summary li:nth-child(2) a'), 0, 'innerHTML', 'branch', '个分支');replace_dom($('.numbers-summary li:nth-child(3) a'), 0, 'innerHTML', 'releases', '个版本');replace_dom($('.numbers-summary li:nth-child(4) a'), 0, 'innerHTML', 'contributors', '个贡献者');replace_dom('#context-commitish-filter-field', 0, 'placeholder', [['Filter branches/tags', '搜索分支标签'],['Find a tag', '搜索标签']]);replace_dom($('h3'), 'each', 'innerHTML', [['Watched repositories', '监控的版本库'],]);replace_dom($('button,a,span,i'), 'each', 'innerHTML', [['New pull request', '新拉取请求'],[' Projects', ' 项目'],[' Pulse', ' 脉冲'],[' branch', ' 分支'],['Graphs', '图表'],['Settings', '设置'],['Pull requests', '拉取请求'],['Change notification settings', '更改通知设置'],['Unread', '未读'],['Unwatch all', '取消全部监控'],['Unwatch', '取消监控'],['Not watching', '不监控'],['Participating', '参与'],['Mark all as read', '标记全部为已读'],['All notifications', '所有通知'],['Notifications', '通知'],['Watching', '监控'],['Learn more', '加载更多'],['New repository', '新建仓库'],['New team', '新建团队'],['My teams', '我的团队'],['Repositories', '仓库'],['People', '成员'],['Teams', '团队'],['Use SSH', '使用SSH协议'],['Use HTTPS', '使用HTTPS协议'],['Create new file', '创建新文件'],['Upload files', '上传文件'],['Find file', '搜索文件'],['Issues', '问题'],['Code', '代码'],['Wiki', '维基'],['Contact GitHub', '联系GitHub'],['Training', '培养'],['Blog', '博客'],['Shop', '商店'],['About', '关于'],['Labels', '标签'],['Milestones', '里程碑'],['Filters', '搜索'],['Clone or download', '克隆或下载'],['Branches', '分支'],['Branch:', '分支:'],['Tags', '标签'],['Download ZIP', '下载ZIP压缩包'],['Switch branches/tags', '切换分支或标签']]);})();
一个翻译github的脚本
(function() {var url_has = function(str) {return location.href.indexOf(str) >= 0;}var $ = function(selector) {return document.querySelectorAll(selector);};var replace_dom = function(selector, num, attr, old_string, new_string) {var selector_str = selector;if (typeof selector == 'string') {selector = $(selector);}var rep = function(str) {str = str || '';if (typeof new_string == 'undefined') {for (var j in old_string) {str = str.replace(old_string[j][0], old_string[j][1]);}} else {str = str.replace(old_string, new_string);}return str;}if (num === 'each') {for (var i in selector) {selector[i][attr] = rep(selector[i][attr]);}} else if (selector.length && (num in selector) && (attr in selector[num])) {selector[num][attr] = rep(selector[num][attr]);}if (typeof selector_str == 'string') {setTimeout(function() {replace_dom(selector_str, num, attr, old_string, new_string);}, 1000);}};if (!url_has('github.com')) {return;}// 搜索框replace_dom($('.header-search-input'), 0, 'placeholder', 'Search GitHub', '全站搜索');// 翻译导航 Pull requests, Issues, Gistreplace_dom($('.header-nav a'), 2, 'innerHTML', 'Gist', '重点');// 首页的两个大按钮replace_dom($('.shelf-cta'), 0, 'innerHTML', 'Read the guide', '阅读指南');replace_dom($('.shelf-cta'), 1, 'innerHTML', 'Start a project', '开始一个项目');// 首页我贡献的replace_dom($('[role=navigation] h3'), 0, 'innerHTML', 'Repositories you contribute to', '你有贡献的库');// 首页我的仓库replace_dom($('#your_repos'), 0, 'innerHTML', 'Your repositories', '你的仓库');replace_dom($('#your_repos a'), 0, 'innerHTML', 'New repository', '新建仓库');replace_dom($('.repo-filter'), 0, 'innerHTML', 'All', '全部');replace_dom($('.repo-filter'), 1, 'innerHTML', 'Public', '公开');replace_dom($('.repo-filter'), 2, 'innerHTML', 'Private', '私有');replace_dom($('.repo-filter'), 3, 'innerHTML', 'Sources', '创建的');replace_dom($('.repo-filter'), 4, 'innerHTML', 'Forks', '克隆的');replace_dom($('#your-repos-filter'), 0, 'placeholder', 'Find a repository', '搜索仓库');// document.querySelector('.file-navigation i').innerHTML = '分支:';// 翻译提交时间replace_dom('relative-time,time-ago', 'each', 'innerHTML', [['minutes ago', '分钟前'],['an hour ago', '1小时前'],['hours ago', '小时前'],['a day ago', '一天前'],['days ago', '天前'],['a month ago', '1个月前'],['months ago', '个月前'],[/^on\s(\d+)\sJan/, '1月$1号'],[/^on\s(\d+)\sFeb/, '2月$1号'],[/^on\s(\d+)\sMar/, '3月$1号'],[/^on\s(\d+)\sApr/, '4月$1号'],[/^on\s(\d+)\sMay/, '5月$1号'],[/^on\s(\d+)\sJun/, '6月$1号'],[/^on\s(\d+)\sJul/, '7月$1号'],[/^on\s(\d+)\sAug/, '8月$1号'],[/^on\s(\d+)\sSep/, '9月$1号'],[/^on\s(\d+)\sOct/, '10月$1号'],[/^on\s(\d+)\sNov/, '11月$1号'],[/^on\s(\d+)\sDec/, '12月$1号']]);// 翻译提交时间replace_dom($('.commit-group-title'), 'each', 'innerHTML', [['Commits on', '提交时间: '],[/Jan\s(\d+)\,\s(\d+)/, '$2年1月$1号'],[/Feb\s(\d+)\,\s(\d+)/, '$2年2月$1号'],[/Mar\s(\d+)\,\s(\d+)/, '$2年3月$1号'],[/Apr\s(\d+)\,\s(\d+)/, '$2年4月$1号'],[/May\s(\d+)\,\s(\d+)/, '$2年5月$1号'],[/Jun\s(\d+)\,\s(\d+)/, '$2年6月$1号'],[/Jul\s(\d+)\,\s(\d+)/, '$2年7月$1号'],[/Aug\s(\d+)\,\s(\d+)/, '$2年8月$1号'],[/Sep\s(\d+)\,\s(\d+)/, '$2年9月$1号'],[/Oct\s(\d+)\,\s(\d+)/, '$2年10月$1号'],[/Nov\s(\d+)\,\s(\d+)/, '$2年11月$1号'],[/Dec\s(\d+)\,\s(\d+)/, '$2年12月$1号']]);// 创建新仓库页面replace_dom($('.subhead-heading'), 0, 'innerHTML', 'Create a new repository', '创建一个新的存储库');replace_dom($('.subhead-description'), 0, 'innerHTML', 'A repository contains all the files for your project, including the revision history.', '一个存储库包含您的项目的所有文件,包括修改历史记录。');replace_dom($('.owner-reponame label'), 0, 'innerHTML', 'Owner', '所有者');replace_dom($('.owner-reponame label'), 1, 'innerHTML', 'Repository name', '仓库名称');replace_dom($('.with-permission-fields .my-3'), 0, 'innerHTML', 'Great repository names are short and memorable. Need inspiration? How about', '一个存储库包含您的项目的所有文件,包括修改历史记录。');replace_dom($('.select-menu-title'), 0, 'innerHTML', 'Choose another owner', '选择其他所有者');replace_dom($('[for=repository_description]'), 0, 'innerHTML', 'Description', '描述');// replace_dom($('.with-permission-fields .form-checkbox label :nth-child(3)'), 0, 'textContent', 'Public', '公开');replace_dom($('.with-permission-fields .form-checkbox .note'), 0, 'innerHTML', 'Anyone can see this repository. You choose who can commit.', '公开: 任何人都可以看到这个库。你可以选择谁能提交。');// replace_dom($('.with-permission-fields .form-checkbox label :nth-child(3)'), 0, 'textContent', 'Private', '私有');replace_dom($('.with-permission-fields .form-checkbox .note'), 1, 'innerHTML', 'You choose who can see and commit to this repository.', '私有: 您选择谁可以看到并提交到这个存储库。');// 版本库首页replace_dom($('.header-search-scope'), 0, 'innerHTML', [['This repository', '搜索当前仓库'],['This organization', '搜索当前组织']]);replace_dom($('.numbers-summary li:nth-child(1) a'), 0, 'innerHTML', 'commits', '次提交');replace_dom($('.numbers-summary li:nth-child(2) a'), 0, 'innerHTML', 'branch', '个分支');replace_dom($('.numbers-summary li:nth-child(3) a'), 0, 'innerHTML', 'releases', '个版本');replace_dom($('.numbers-summary li:nth-child(4) a'), 0, 'innerHTML', 'contributors', '个贡献者');replace_dom('#context-commitish-filter-field', 0, 'placeholder', [['Filter branches/tags', '搜索分支标签'],['Find a tag', '搜索标签']]);replace_dom($('h3'), 'each', 'innerHTML', [['Watched repositories', '监控的版本库'],]);replace_dom($('button,a,span,i'), 'each', 'innerHTML', [['New pull request', '新拉取请求'],[' Projects', ' 项目'],[' Pulse', ' 脉冲'],[' branch', ' 分支'],['Graphs', '图表'],['Settings', '设置'],['Pull requests', '拉取请求'],['Change notification settings', '更改通知设置'],['Unread', '未读'],['Unwatch all', '取消全部监控'],['Unwatch', '取消监控'],['Not watching', '不监控'],['Participating', '参与'],['Mark all as read', '标记全部为已读'],['All notifications', '所有通知'],['Notifications', '通知'],['Watching', '监控'],['Learn more', '加载更多'],['New repository', '新建仓库'],['New team', '新建团队'],['My teams', '我的团队'],['Repositories', '仓库'],['People', '成员'],['Teams', '团队'],['Use SSH', '使用SSH协议'],['Use HTTPS', '使用HTTPS协议'],['Create new file', '创建新文件'],['Upload files', '上传文件'],['Find file', '搜索文件'],['Issues', '问题'],['Code', '代码'],['Wiki', '维基'],['Contact GitHub', '联系GitHub'],['Training', '培养'],['Blog', '博客'],['Shop', '商店'],['About', '关于'],['Labels', '标签'],['Milestones', '里程碑'],['Filters', '搜索'],['Clone or download', '克隆或下载'],['Branches', '分支'],['Branch:', '分支:'],['Tags', '标签'],['Download ZIP', '下载ZIP压缩包'],['Switch branches/tags', '切换分支或标签']]);})();
Arduino
简介
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti。
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
发展历程
Massimo Banzi之前是意大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles讨论了这个问题。 David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程式码。又过了三天,电路板就完工了。Massimo Banzi喜欢去一家名叫di Re Arduino的酒吧,该酒吧是以1000年前意大利国王Arduin的名字命名的。为了纪念这个地方,他将这块电路板命名为Arduino。
随后Banzi、Cuartielles和Mellis把设计图放到了网上。版权法可以监管开源软件,却很难用在硬件上,为了保持设计的开放源码理念,他们决定采用Creative Commons(CC)的授权方式公开硬件设计图。在这样的授权下.任何人都可以生产电路板的复制品,甚至还能重新设计和销售原设计的复制品。人们不需要支付任何费用,甚至不用取得Arduino团队的许可。然而,如果重新发布了引用设计,就必须声明原始Arduino团队的贡献。如果修改了电路板,则最新设计必须使用相同或类似的Creative Commons(CC)的授权方式,以保证新版本的Arduino电路板也会一样是自由和开放的。唯一被保留的只有Arduino这个名字,它被注册成了商标,在没有官方授权的情况下不能使用它。
Arduino发展至今,已经有了多种型号及众多衍生控制器推出。[2]
平台特点
跨平台
Arduino IDE可以在Windows、Macintosh OSX、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
简单清晰
Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 AVRGCC库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。
开放性
Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
发展迅速
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。
因为Arduino的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;大学里,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。[3]
功能
可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件…。 Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。
硬件组成
主板
Arduino的型号有很多,如
- Arduino Uno
- Arduino Nano
- Arduino LilyPad
- Arduino Mega 2560
- Arduino Ethernet
- Arduino Due
- Arduino Leonardo
- Arduino Yún

Arduino Uno

Arduino Nano

Arduino Yun
扩展板
Arduino的扩展板很多,如
- Ard- uino GSM Shield
- Arduino GSM Shield Front
- Arduino Ethernet Shield
- Arduino WiFiShield
- Arduino Wireless SD Shield
- Arduino USB Host Shield
- Arduino Motor Shield
- Arduino Wireless Proto Shield
- Arduino Proto Shield
版权与付费
为了保持设计的开放源码理念,因为版权法可以监管开源软件,却很难用在硬件上,Arduino决定采用Creative Commons许可。 Creative Commons(CC)是为保护开放版权行为而出现的类似GPL的一种许可(license)。在Creative Commons许可下,任何人都被允许生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要付版税,甚至不用取得Arduino团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的 Creative Commons许可,以保证新版本的Arduino电路板也会一样的自由和开放。唯一被保留的只有Arduino这个名字。它被注册成了商标。如果有人想用这个名字卖电路板,那他们可能必须付一点商标费用给Arduino的核心开发团队成员。
sass安装
1. 下载和安装ruby
(1) 下载地址 http://rubyinstaller.org/downloads
(2) 安装过程中勾选Add Ruby Executables to your PATH
(3)启动Ruby命令行
2. 安装sass
(1) 删除默认的源gem sources --remove https://rubygems.org/
(2) 指定淘宝的源gem sources -a https://ruby.taobao.org/
(3) 执行下面的命令安装sass:gem install sass
如果没有修改路径, 安装的sass路径在:C:\Ruby22-x64\bin\sass.bat
到此安装结束
NetBeans 配置sass
(1) 菜单 -> 工具 -> 其他 -> css预处理程序 -> sass路径 填写C:\Ruby22-x64\bin\sass.bat
(2) 项目 -> 右击项目 -> 属性 -> css预处理程序 -> sass -> 添加输入和输出目录即可