Giter VIP home page Giter VIP logo

500days-of-github's Introduction

bilibili github juejin YouTube Channel Views

Hi 👋, I'm itgoyo

A passionate fullstack developer from China

Languages and Tools:

android bash c cplusplus css3 docker firebase flutter git go hexo html5 java javascript jenkins kotlin kubernetes linux mongodb mysql nginx nodejs postgresql python react reactnative spring vuejs webpack

Github Stats

😇 Medium Published articles:
Recent Article 0
Recent Article 1
Recent Article 2

🎧 Spotify Playing

spotify-github-profile

🎯 Weekly Fuck The Code

No activity tracked

✨ My Followers

NaiboWang
Naibo Wang
hoochanlon
123456
lowlighter
Simon Lecoq
snowdream
snowdream
Leticia-maria
Letícia Maria Pequeno Madureira
sbilly
sbilly
victoryang00
Yiwei Yang
lichengtao1989
mycodelct
Hexzilla
Hexzilla
guanguans
guanguans
jhonataT
Jhonata Tenório
donmartz
donmartz
AlphaTechnolog
Gabriel Guerra
zhuwenxing
zhuwenxing

名字:李狗蛋LGD

Github:itgoyo

微博、知乎、B站:李狗蛋LGD

斗鱼房间:https://www.douyu.com/201001

B站房间:https://live.bilibili.com/3519206

Don't be a programmer, Be a problem solver.

公众号:v2code

  • 📫 How to reach me:

  • 💻 PC/Mac:

    • M1 Pro 16寸 16G+512G
    • NUC8i7HVK 64G 2TSSD Big Sur 11.2 + Win10
    • MacBookPro2015 16G 256SSD
    • Mac Mini m1 16G 512SSD
    • i7-6700k 32G 256SSD+4T RX590 MacOS Big Sur 11.1
    • i5-4590 16G 1TSSD RX570 MacOS Catalina 10.15.7
    • i5-10400 16G 512SSD Ubuntu20.04 + Win10
    • i5-10400 16G 512SSD+256SSD Win10 + Big Sur 11.1
    • AMD-4700GE 32G+16T+750Ti Exsi(LinuxMint+Win10)
    • AMD-4700GE 32G+3T Exsi(LinuxMint+Win10)
    • TencentCloud 4Core-4G-80G-1200G/3Year Ubuntu20.04
    • 蜗牛星际 J1900+4G +3T DSM918+
    • 威联通QNAP TS462C 500G
    • 威联通QNAP TVS-675 8h8c
    • ZimaBoard
    • Gen8
    • 硬酷R1 N6005 16+512
    • UGREEN DX4600
    • i7-6700t 32G 18TB Exsi(Win10 + Ubuntu)
    • MINISFORUM um790 Pro 16G 2TSSD Linux
    • MINISFORUM um480XT Pro 16G 512G SSD Linux Mint
    • i5-4790 16G 60G 1T Linux Mint
  • 📱 phone/iPhone:

    • iPhone12
  • 📷 Camera:

    • Sony A6000
    • Sony A6400
    • Sony A7M4
  • 🎤 Mic:

    • SM7B + ID14MKII
    • MAONO PM320T + E2
✏️ 🎮 📖 🎬
Blogs Games Books Movies

⚡ Recent Activity

  1. ❗ Opened issue #134 in itgoyo/AndroidSummary
  2. ❗ Opened issue #136 in tw93/weekly

📺 Latest YouTube Videos

500days-of-github's People

Contributors

azec4 avatar itgoyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

500days-of-github's Issues

键盘按键映射修改

键盘映射修改

  • Window

使用软件AutoHotkey来修改或者开源软件sharpkeys

或者使用MapKeyboard来修改(个人推荐)

2020-12-20修改
现在推荐使用PowerToys,支持组合按键映射

  • Mac

使用软件Karabiner来修改

  • Linux

使用shell脚本来修改

例如常见的Esc和CapsLock互换


#!/usr/bin/env bash
#
# different DM uses different filename:
# lightdm: ~/.xprofile
# slim:    ~/.xinitrc

# from old ~/.xinitrc
if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

log () {
  echo "$1=<$2>" >> ~/.xinitrc_LOG
}

init_____xfce () {
  export XIM=fcitx
  export GTK_IM_MODULE=xim
  export QT_IM_MODULE=xim
  export XMODIFIERS=@im=fcitx

  local hostname="$(hostname)"
  if [ "$hostname" = "cosmos" ]; then
    xrandr --output HDMI-0 --set underscan on
  fi

  if [ "$hostname" = "djpon" ] || [ "$hostname" = "cosmos" ] ;then
    setxkbmap jp
  else
    log "not running setxkbmap jp"
  fi

  if [ "$hostname" = "thinkpad" ];then
    synclient TouchPadOff=1 # disable touchpad
  fi

  # fcitx-xkb causes xmodmap settings to be reset
  fcitx -rd --disable fcitx-xkb

  xmodmap -e 'clear Lock'
  xmodmap -e 'keycode 66 = Escape'
  xmodmap -e 'keycode 9 = Caps_Lock'
  log "xmodmap executed" "$(date)"
  xset r rate 200 32

  # disable pc speaker
  xset -b

  # ssh-agent
  # eval $(ssh-agent -s)
}

if [[ -d "$HOME/Android/Sdk" ]]; then
  export ANDROID_HOME="$HOME/Android/Sdk"
fi

init_____xfce
log 'xinitrc' 'running'
unset init_____xfce
unset log

http://blog.csdn.net/lslin405/article/details/68059331

最近确定在网上再找找办法解决,最后找到了这个方法dconf-editor,使用这个修改切换中英文都不会发生改变,修改是永久的,为了下次修改方便,特地在此记录下,如果对他人有所帮助那再好不过了。按照提示直接sudo apt install dconf-editor进行安装,接着运行dconf-editor命令启动图形界面,选择org >> gnome >> desktop >> input-sources,修改xkb-options为['caps:swapescape'],如下图:


xmodmap -pke | grep -i tab
xmodmap -pke | grep -i grave
上面两条命令分别找到 tab 和 ~ 两个键对应的keycode,比如,在我的系统上是:
keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
和
keycode 49 = grave asciitilde grave asciitilde
你的系统上对应的keycode可能略有不同。 如果你的xmodmap没有Tab的定义,也没关系,用xev也能找到keycode,然后创建一个 ~/.Xmodmaprc 文件,内容为
keycode 49 = Tab ISO_Left_Tab Tab ISO_Left_Tab
keycode 23 = grave asciitilde grave asciitilde
就是把标准的结果互换一下,然后保存 ~/.Xmodmaprc
在命令行下 xmodmap ~/.Xmodmaprc,就行了
注意,我这里tab对应keycode 23, ~对应49,你的不一定是这样的,可以用xev来识别。

此方法只是临时的

Linux Mint

  • click System Settings
  • keyboard layout
  • options...(lower right hand corner)
  • caps lock key behaviour (4th down)
  • Scroll down and choose "Swap ESC and Caps Lock".

如何使用手机摄像头作为电脑的摄像头

如何使用手机摄像头作为电脑的摄像头

软件官网

需要电脑和手机端都安装上DroidCam这个软件

电脑端配置:

里面的数据要根据手机端生成的来填写

如果使用USB链接一直连接不上的话,应该是SDK中的ADB.exe版本太旧了,请自行更新到最新版即可

如果想开启高清分辨率的话,在软件安装的根目录有一个Toggle HD Mode,打开即可

祝您使用愉快!

Day04-Kotlin学习资料


2017-5-18 Google I/O 大会指定Kotlin成为Android的官方开发语言

本项目地址:https://github.com/kotlinandroid/kotlin-for-android

欢迎大家✨✨✨✨✨✨

以下是收集整理的Kotlin资料

  1. 在线阅读或下载GitBook
  2. 在线阅读

  Github地址: https://github.com/enbandari/Kotlin-Tutorials

1.百度云 (链接: https://pan.baidu.com/s/1kUDA203 密码: mv2

2.腾讯视频    http://v.qq.com/boke/gplay/903446d6231d8612d198c58fb86eb4dc_t6d000101bd9lx1.html

Kotlin 语言程序设计

上手 Kotlin

Kotlin & Java

开发实践

更多

开源库和框架

Android 开发

  • KAndroid - Kotlin library for Android
  • Bubble - 屏幕方向监测
  • Kotpref - Android SharedPreference delegation for Kotlin.
  • Fuese - The simple generic LRU memory/disk cache for Android

Web 开发

  • ktor - 用 Kotlin 写的 Web 后端开发框架
  • Kara - MVC 开发框架
  • KotlinPrimavera - KotlinPrimavera is a set of Kotlin libraries to support Spring portfolio projects
  • Yested - 用来开发 SPA 应用的框架
  • Kovert - The invisible REST and web framework
  • HEXAGON - 微服务框架
  • kottpd - REST framework written in pure Kotlin

网络

  • Fuel - The easiest HTTP networking library for Kotlin/Android.
  • Wasabi - HTTP 框架
  • khttp - khttp is a simple library for HTTP requests in Kotlin.

依赖注入

函数式编程

JSON

  • Klaxon - 一个解析 JSON 的库

数据库

  • Exposed - Kotlin SQL 库
  • Kotlin NoSQL - NoSQL database query and access library for Kotlin
  • KotliQuery - A handy Database access library in Kotlin

测试

  • Spek - A Specification Framework
  • HamKrest - Hamcrest for Kotlin
  • Knit - JUnit API set for Kotlin
  • KotlinTest - Kotlin 测试框架

构建工具

  • Kobalt - 一个用 Kotlin 写的多功能构建工具

编辑器

其他

Demo

Android 客户端

解决VIM中打开文件里有的^M字符 & Linux命令dos2unix

解决VIM中打开文件里有的^M字符 & Linux命令dos2unix

  • 产生问题的原因:

在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,对于回车符的定义:

     windows:0D0A
     unix\linux: 0A
     MAC: 0D

DOS, Mac 和Unix格式的文件回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。首先是一个字符命令使打印头移回开始位置(回车,),然后另一个字符命令控制向前进纸一行(进纸,).在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要用两个字符来表示一行的结束。UNIX一族决定只用进纸一个字符来表示行尾。来自苹果阵营的人则把回车作为换行的标准。MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行传统。这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题。Vim编辑器则可以识别这些不同格式的文件。

解决方法:

  • 在命令模式下使用正则表达式进行字符全文空替换:
:%s/^M//g

其中"^M"的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的。像^M 这样的在VIM中是控制字符,在查找替换中输入控制字符必须用别的方法,那就是在输入^M时,必须依次在键盘上敲入Ctrl+V和Ctrl+M。

  • 使用sed工具
$ sed -e 's/\x0D//g' mydebug.c > temp_mydebug.c23
  • 最简单的使用dos2unix工具
$ sudo apt-get install dos2unix
$ dos2unix README.txt

Day10-Lantern

玩Lantern的正确姿势

proxifier
L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition)
5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition)
P427L-9Y552-5433E-8DSR3-58Z68(MAC)

安装一个gnome桌面,爽得飞起
QQ加上引导功能
sudo apt-add-repository ppa:fixnix/indicator-systemtray-unity
sudo apt-get update
sudo apt-get install indicator-systemtray-unity

Linux文件管理器ranger

详细教程请参考:https://linux.cn/article-1995-1.html#3_3958

软件下载地址

Unpack the archive, enter the directory and run ranger:

tar xvf ranger-stable.tar.gz
cd ranger-stable
./ranger.py

If you want to conventionally install it, for example for a multi-user system, you can run this command:

sudo make install

然后终端ranger,即可打开文件管理器

键盘右键->为打开的意思,浏览图片的时候可以使用改键,来预览图片

详细到底有多酷,可以自己点开此链接观看youtube

<iframe width="560" height="315" src="https://www.youtube.com/embed/nlolvAVqn10" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe>

配置ranger:

默认如果找不到配置文件,要先执行以下命令

ranger --copy-config=all

在/home/用户名/.config/ranger文件夹下有一系列配置文件。启用文件预览功能,需要先打开rc.conf文件

找到“set use_preview_script”一行,将其值设为“true”。本设置将启用scope.sh脚本,用于各种文件的预览;

找到“set preview_script”一行,将其值设为“~/.config/ranger/scope.sh”,为预览功能指定脚本文件;

找到“set preview_images”一行,将其值设为“true”,本设置启用对图片的预览功能;

找到“set preview_images_method”一行,将其值设为“w3m”,表明是用w3m作为图片预览的工具。

更多详细设置请参考:http://blog.sina.com.cn/s/blog_69e5d8400102wp2k.html

如果在使用w3m的过程中出现缺少w3mimgdisplay的时候可以使用一下命令行来安装

sudo apt install w3m-img

In Ranger, you can choose a program to open a file based on its extension. For example, to open a JPEG file with Feh image viewer, add this line at the top of rifle.conf:
ext jpg = feh "$@"
After the specific file associations, I like to have a rule to catch all the rest of the files and open them using xdg-open:
has xdg-open, flag f = xdg-open "$1"

Mac相关的可以参考

https://github.com/johngodlee/ranger_rifle_conf_tut/blob/master/ranger_rifle_conf_mac.md

https://unix.stackexchange.com/questions/219765/open1-in-rifle-conf-for-ranger-on-os-x

https://unix.stackexchange.com/questions/381499/ranger-what-program-is-opening-file

Hexo卡哇伊插件hexo-helper-live2d

hexo-helper-live2d

首先安装插件代码

npm install --save [email protected]

然后在根配置文件和主题配置文件填入一下信息

 Live2D
## https://github.com/EYHN/hexo-helper-live2d
ive2d:
  enable: true
  scriptFrom: jsdelivr
  model:
    use: https://cdn.jsdelivr.net/npm/[email protected]/assets/koharu.model.json
  display:
    position: left
    width: 75
    height: 150
  mobile:
    show: true
  react:
    opacityDefault: 1
    opacityOnHover: 0.2

Hexo主题maupassant所遇到的坑

本地搜索的话要在hexo根目录下的config_yml配置

search:
  path: search.xml
  field: all

而且要使用搜索功能的话要安装

npm install --save hexo-generator-search

!!!注意:搜索是及时显示的搜索不用按回车键

直播文字

1.这也能直播?(播什么是我的事,不看可以走

2.一边直播一边学习,肯定是不学的(至少我还有理由骗自己学习

3.这都有人看?(一起互勉学习

4.这是学习?(不然我在睡觉吗?

wget递归下载整个网站

wget -r -p -np -k http://xxx.com/xxx

-r, --recursive(递归) specify recursive download.(指定递归下载)
-k, --convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)
-p, --page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)
-np, --no-parent(不追溯至父级) don't ascend to the parent directory.

另外断点续传用-nc参数 日志 用-o参数

执行 wget -r -p -np -k https://itgoyo.github.io/ 命令

搭建Nginx+RTMP服务器

Mac

一、安装Homebrow

//安装
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

//卸载
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

二、安装Nginx

  • glone nginx项目到本地:
brew tap homebrew/nginx
  • 执行安装
brew install nginx-full --with-rtmp-module

如果不翻墙,过程可能有点久,请耐心等待。

如果你想知道Nginx的安装目录

brew info nginx-full

三、运行Nginx

nginx

在浏览器地址栏输入:http://localhost:8080

如果出现一下界面则说明安装成功

四、配置RTMP

使用文本编辑器打开

/usr/local/etc/nginx/nginx.conf

然后在文件的末尾处,加入以下代码

rtmp {

  server {
      listen 1935;


    #直播流配置
      application rtmplive {
          live on;
      #为 rtmp 引擎设置最大连接数。默认为 off
      max_connections 1024;


       }


      application hls{

          live on;
          hls on;
          hls_path /usr/local/var/www/hls;
          hls_fragment 1s;
      }
   }
}

五、推流

  • ffmpeg

  • OBS(这里比较推荐,图形化界面,现在各大直播网站都是使用该推流工具直播)

下载地址:https://obsproject.com/

进入OBS软件的设置界面

然后选择串流

设置好了之后点击开始串流

如果串流成功下方会出现绿色的进度条

六、播放器看直播

  • VLC (这里推荐这款软件,功能比较强大,在linux占据大壁江山)

下载地址:http://www.videolan.org/vlc/index.zh.html

File - Open NetWork

直播效果如下:

Day06-Vim的使用

Vim

详细Vim快捷键大全

Vim的配置以spf-13为例子

项目地址: https://github.com/spf13/spf13-vim

Vim的安装

  • Linux, *nix, Mac OSX Installation

The easiest way to install spf13-vim is to use our automatic installer by simply copying and pasting the following line into a terminal. This will install spf13-vim and backup your existing vim configuration. If you are upgrading from a prior version (before 3.0) this is also the recommended installation.

Requires Git 1.7+ and Vim 7.3+

curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh

If you have a bash-compatible shell you can run the script directly:

sh <(curl https://j.mp/spf13-vim3 -L)

此过程会比较长,包括插件的下载还有安装,这个过程将近1个多小时

  • Installing on Windows

On Windows and *nix Git and Curl are required. Also, if you haven't done so already, you'll need to install Vim. The quickest option to install all three dependencies (Git, Curl, Vim and spf13-vim) is via Chocolatey NuGet. After installing Chocolatey, execute the following commands on the command prompt:

Install with cmd.exe(run as admin mode)

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
C:\> choco install spf13-vim

一直Y,整个过程大概2h左右

Vim插件的介绍

  • Vundle(The best plugin manager)

Vundle is an excellent system built on the same principles as Pathogen, but with an integrated plugin management system that is Git and Github aware.

spf13-vim uses the Vundle plugin management system to have a well organized vim directory (Similar to mac's app folders). Vundle also ensures that the latest versions of your plugins are installed and makes it easy to keep them up to date.

  • NERDTree(file navigation)

NERDTree is a file explorer plugin that provides "project drawer" functionality to your vim editing. You can learn more about it with :help NERDTree or checkout my post on NERDTree.

Use Ctrl+e to toggle NERDTree

  • ctrlp(fast file finder)

Ctrlp replaces the Command-T plugin with a 100% viml plugin. It provides an intuitive and fast mechanism to load files from the file system (with regex and fuzzy find), from open buffers, and from recently used files.

Use Ctrl+p to toggle Ctrlp

  • neocomplcache(autocomplete++)

NeoComplCache is an amazing autocomplete plugin with additional support for snippets. It can complete simulatiously from the dictionary, buffer, omnicomplete and snippets. This is the one true plugin that brings Vim autocomplete on par with the best editors.

Use Ctrl+n to toggle neocomplcache

  • Tagbar(tag generation and navigation)

spf13-vim includes the Tagbar plugin. This plugin requires exuberant-ctags and will automatically generate tags for your open files. It also provides a panel to navigate easily via tags

Use ,tt to toggle neocomplcache

关于在Mac端ctags无效的解决方法

https://brew.sh/

https://github.com/universal-ctags/ctags

https://github.com/universal-ctags/homebrew-universal-ctags


在Windows端,如果想切换到别的盘符进行操作的话,使用

:NERDTree D:\\

进行目录的跳转


Preview: To preview markdown format you need to install bluecloth gem

在使用previewMarkdown的时候出现了
Preview: To preview markdown format you need to install bluecloth gem

解决方法:

  • sudo gem install redcarpet

  • sudo gem install bluecloth

Linux出现的问题

can't find header files for ruby at /usr/lib/ruby/include/ruby.h

解决方法:sudo apt-get install ruby-dev

提示找不到tag文件

用法:
    1.生成标签文件(cmd到项目的目录中执行)
        在当前目录下(运行$提示符后面的命令): 
        $ctags -R .
      -R表示recursive,递归,为当前目录及其子目录中的c文件生成标签文件。最后一个.表示在当前目录。
        运行完当前目录会多一个文件tags,就是c标签的索引文件。
    2.跳转
        1)用vim打开一个已经建过标签的c文件    
        2)ctrl+] 找到光标所在位置的标签定义的地方
        3)ctrl+t 回到跳转之前的标签处
    3.窗口显示方法
         命令Tagbar toggle打开相应的方法窗口显示
    注意:此时运行vim,必须在"tags"文件所在的目录下运行。否则,运行它会找不到"tags"文件,而需要在vim中用":set tags="命令设定"tags"文件的路径。对于一个稍微大点的项目,你可能在任何一个目录下打开vim,然而在每个目录下都生成一个tags文件并不 是个好主意,那么如何解决呢?方法是在.vimrc中增加一行:
        set tags=tags;/
    这是告诉vim在当前目录找不到tags文件时请到上层目录查找。

窗口切换快捷键

Ctrl+w+w

关闭分屏

关闭当前窗口。
Ctrl+W c
关闭当前窗口,如果只剩最后一个了,则退出Vim。
Ctrl+W q

打开多个窗口了之后,怎么快速切换

:buffers 列表 :bn下一个 :bp 上一个 :b17

取消查找遗留的边框

set: nohlseach

VIM编辑多行

vim进了多行编辑模式:<ESC>之后按CTRL+V进入visual block模式(列编辑)。光标移到某行行首,进入visual block模式,上下键选择行,按I(i的大写字母),输入##,然后按<ESC>键,这样就在多行行首添加##了。也可以在多行的固定位置添加固定字符。

如果要删除这些##,进入visual block模式,选中这些##,按d即可。

全局搜索Ack

按键 功能
? 显示键盘映射
o 打开文件
O 打开文件关闭QuickFix窗口
go 预览文件,但焦点留在ack搜索结果上
t 在新标签页打开文件
T 在新标签页打开但不切换到那个标签页
h 分屏打开
H 分屏打开,但焦点停留在ack搜索结果上
v 竖直分屏打开
gv 竖直分屏打开,但焦点停留在ack搜索结果上
q 关闭QuickFix窗口

windows

在Windows下安装它们可以使用Chocolatey,安装方法如下:首先以管理员权限打开cmd窗口,然后运行下列命令,首先以管理员权限打开cmd窗口(管理员那个终端才有效),然后运行下列命令

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

安装完了之后

choco install ack 

Mac

brew install ack

如果出现一下乱码

'perl' 不是内部或外部命令,也不是可运行的程序

下载安装ActivePerl,配置环境变量即可解决此问题。
下载地址

SpaceVim

该配色使用的是gruvbox

如果想更换成此主题

  • 在vimrc文件中增加
 "gruvbox主题"
Plugin 'morhetz/gruvbox'
set bg=dark
colorscheme gruvbox

然后全局搜索let g:airline_theme,改成如下颜色防止颜色不协调

  let g:airline_theme = 'dark'

终端运行
PluginInstall完成之后,重启就可以了

怎么打开最进打开过的文件

启动Vim的时候Ctrl+o即可

标记

使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 。

m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。

m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。

`{a-z}: 移动到标记位置。

‘{a-z}: 移动到标记行的行首。

`{0-9}:回到上[2-10]次关闭vim时最后离开的位置。

`: 移动到上次编辑的位置。"也可以,不过`精确到列,而"精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i。

`”: 移动到上次离开的地方。

`.: 移动到最后改动的地方。

:marks 显示所有标记。

:delmarks a b – 删除标记a和b。

:delmarks a-c – 删除标记a、b和c。

:delmarks a c-f – 删除标记a、c、d、e、f。

:delmarks! – 删除当前缓冲区的所有标记。

:help mark-motions 查看更多关于mark的知识。

Linux版本中粘贴系统剪切板内容失败

- 首先,查看vim版本是否支持clipboard

vim --version | grep "clipboard"

clipboard前面有一个小小的减号,说明不支持。

如果不支持的话,需要安装图形化界面的vim,或者重新编译vim
sudo apt-get install vim-gnome

安装完成后再次执行:

vim --version | grep "clipboard"

发现已经支持clipboard

那么我们的目的是要复制到系统剪切板则需要选中内容后输入命令:"+y

粘贴到特定的寄存器也是同理。例如"+p将系统剪切板的内容拷贝到vim中(非编辑模式下)。

快速跳转插件Easymotion

vim-easymotion

配置如下:

let g:EasyMotion_smartcase = 1
"let g:EasyMotion_startofline = 0 " keep cursor colum when JK motion
map <Leader><leader>h <Plug>(easymotion-linebackward)
map <Leader><Leader>j <Plug>(easymotion-j)
map <Leader><Leader>k <Plug>(easymotion-k)
map <Leader><leader>l <Plug>(easymotion-lineforward)
" 重复上一次操作, 类似repeat插件, 很强大
map <Leader><leader>. <Plug>(easymotion-repeat)
  • 用法1: 跳转到当前光标前后的位置(w/b)
  • 用法2: 搜索跳转(s)
  • 用法3: 行级跳转(jk)
  • 用法4: 行内跳转(hl)
  • 用法5: 重复上一次动作(.)

建议

1.还可以f和t, 不过建议简单化, 一个w/b走天下.

2.如果你不经常使用s, 可以将s改键, nmap s (easymotion-s), 这样你只需要输入s就可以进行搜索快速跳转(强迫症表示不能忍....)
具体做法见官方文档

3.默认作为这个插件的快捷键其实挺好的, 貌似没有其他插件会导致冲突, 还可以配置一整套, 强迫症很满意

4.可以配置2/n个字符的搜索跳转, 更精准, 按需自取(个人觉得太复杂了没必要) 文档和文档

5.这个插件专心做好跳转就好, 没必要把搜索的活给做了

Vim窗口切换

鼠标在各个窗口间循环移动:
ctrl+w+(小写的 hjkl), "非线性"的跳转的: ctrl_w+t(top : 左上角, +b: bottom, 右下角), p: preview: 上一个子窗口.
set mouse=a 所有all 的状态下都可以使用 鼠标..

窗口本身的位值的移动:
ctrl_w + r: 窗口本身, 不是鼠标指针顺时针 (向下, 向右 移动), R : 则是逆时针反方向(向上, 向左)移动.
ctrl_w+x: 左右上下对应位置的窗口 对调. 要注意窗口必须是 对应的, 如果不对应将无法对换, 比如左边一个大窗口, 右边有两个小的 子窗口, 则左右不能互换.

窗口本身 的位置移动, 而且大小也发生"最大化"变化
Ctrl_w+ HJKL( 注意是大写的字母 H, J, K, L , 表示要按shift才能实现的)... 要注意, 可以通过 windows 窗口 "贴边" 最大化来理解, H和 L 就是 向左或向右 最大化贴边 显示; 而 JK 则是 向上 或 向下 贴边 最大化显示. 最大化后 就不能 再次操作复原窗口了, 其实也没有必要

调整窗口的水平/垂直尺寸?
用ctrl+ w 结合 >, <调整水平尺寸, 用+ - 调整垂直尺寸, 这个是微调. 也可以用纯粹的命令用 :resize +/- n, 或者 vertical resize +/- n (支持命令简写, 但是要能够使命令被唯一确定才行. 通常要用5,10,15, 20的大小间隔来调...太小了没有意义)

除了这些调整/ 遍历鼠标的方法, 还有一个关闭子窗口的问题. 关闭的方式, 除了命令外, 还有窗口关闭 的方式: 用ctrl+w + q(quit), c(close), o(other)等.

VIM注释插件nerdcommenter

nerdcommenter

使用:  
1、 \cc 注释当前行和选中行  
2、 \cn 没有发现和\cc有区别  
3、 \c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作  
4、 \cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释  
5、 \ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释  
6、 \cs 添加性感的注释,代码开头介绍部分通常使用该注释  
7、 \cy 添加注释,并复制被添加注释的部分  
8、 \c$ 注释当前光标到改行结尾的内容  
9、 \cA 跳转到该行结尾添加注释,并进入编辑模式  
10、\ca 转换注释的方式,比如: /**/和//  
11、\cl \cb 左对齐和左右对其,左右对其主要针对/**/  
12、\cu 取消注释  

It requires Vim 7.3.885 or later with Lua support (“+lua”)

方案一:

brew install vim --with-lua

方案二:

brew uninstall vim
brew install luajit
brew install vim --with-luajit

如果觉得在使用vim的时候复制粘贴比较麻烦的话,可以在vimrc里面添加

nmap <c-v> "+gp
nmap <c-c> "+y

时间管理-效率问题

近年来我发现自己总是陷入了一个死循环,就是做一件简单的事情总要花很多时间去完成,一旦完成之后你会发现,哦原来这么简单的啊,也许有的东西你花了一天或者更多的时间去做,做完之后你会发现,挖槽,原来这么简单,花几分钟就能搞好的事情,自己却搞了一整天.

这个是能力问题嘛?我觉得不是,我觉得是解决方式不对的问题.你做一件事情的时候,要抓住该事情的重点信息,什么是需要做的,而什么是次要做的,还有什么是可以不做的.还做做完了之后要把过程写下来,不用太详细,只要自己看记录在下一次遇到相同问题的时候能解决就好.有句话怎么说来着,好记性不如烂笔头.

我发现自己经常涉及到的东西都是涉及不深,就是知道一个大概而已,这样子浪费很多时间去做一些尽是没意义的事情上面.我想很多东西并不是你真的需要,你就是当时脑子热才想去弄的.弄完之后你自己又会发现,妈的花了这么多时间搞这种没有意义的事情.类似于同类型的软件,你就只需要弄好还有玩转一个你认为最好的就可以了,其他的你可以了解一下,但是没有必要花太多时间进去,毕竟很多时候那种次要的软件你用到的很少或者根本就用不上.

每天都要列出自己想要做的事情,然后定一个小目标然后一步步去执行,这样子好过你什么计划都没有想到什么做什么,把生活整理的有条有理的,会比杂乱无章的好太多太多了.毕竟计划会引导你去完成,而无聊则会让你浪费很多时间在无意义的事情上面.

VSCode C

{
	// Place your snippets for c here. Each snippet is defined under a snippet name and has a prefix, body and
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	"init main": {
		"prefix": "main",
		"body": [
			"#include <stdio.h>",
			"#include <stdlib.h>",
			"#include <string.h>",
			"",
			"int main(int argc, char *argv[])",
			"{",
			"    $1",
			"    return 0;",
			"}"
		],
		"description": "Basic main function"
	},
	"Print format": {
		"prefix": "prin",
		"body": [
			"printf(\"$1\",$2);"
		],
		"description": "Quick print format"
	},
	"Print message": {
		"prefix": "pr",
		"body": [
			"printf(\"$1\");"
		],
		"description": "Quick print format"
	},
	"sizeof": {
		"prefix": "si",
		"body": [
			"sizeof(${1:name})"
		],
		"description": "sizeof(name)"
	},
	"for": {
		"prefix": "for",
		"body": [
			"for (${int} ${i} = ${1:0}; ${i} < ${2:length}; ${i}++)",
			"{",
			"    $3",
			"}"
		],
		"description": "Code snippet for 'for' loop"
	},
	"forj": {
		"prefix": "forj",
		"body": [
			"for (${int} ${j} = ${1:0}; ${j} < ${2:length}; ${j}++)",
			"{",
			"    $3",
			"}"
		],
		"description": "Code snippet for 'for' loop"
	},
	"fork": {
		"prefix": "fork",
		"body": [
			"for (${size_t} ${k} = ${1:0}; ${k} < ${2:length}; ${k}++)",
			"{",
			"    $3",
			"}"
		],
		"description": "Code snippet for 'for' loop"
	},
	"forr": {
		"prefix": "forr",
		"body": [
			"for (int ${i} = ${1:length} - 1; ${i} >= ${2:0}; ${i}--)",
			"{",
			"    $3",
			"}"
		],
		"description": "Code snippet for reverse 'for' loop"
	},
	"while": {
		"prefix": "while",
		"body": [
			"while ($1)",
			"{",
			"    $2",
			"}"
		],
		"description": ""
	},
	"if": {
		"prefix": "if",
		"body": [
			"if ($1)",
			"{",
			"    $2",
			"}"
		],
		"description": "Code snippet for if statement"
	},
	"else": {
		"prefix": "else",
		"body": [
			"else",
			"{",
			"    $1",
			"}"
		],
		"description": "Code snippet for else statement"
	},
	"else if": {
		"prefix": "else if",
		"body": [
			"else if ($1)",
			"{",
			"    $2",
			"}"
		],
		"description": "Code snippet for else-if statement"
	},
	"enum": {
		"prefix": "enum",
		"body": [
			"enum ${1:MyEnum}",
			"{",
			"    $2",
			"};"
		],
		"description": "Code snippet for enum"
	},
	"#ifdef": {
		"prefix": "#ifdef",
		"body": [
			"#ifdef ${DEBUG}",
			"$1",
			"#endif // ${DEBUG}"
		],
		"description": "Code snippet for #ifdef"
	},
	"#ifndef": {
		"prefix": "#ifndef",
		"body": [
			"#ifndef ${1:1}",
			"$2",
			"#endif // !$1"
		],
		"description": "Code snippet for #ifndef"
	},
	"#if": {
		"prefix": "#if",
		"body": [
			"#ifdef ${1:0}",
			"$2",
			"#endif // $1"
		],
		"description": "Code snippet for #if"
	},
	"struct": {
		"prefix": "str",
		"body": [
			"struct ${1:MyStruct}",
			"{",
			"    $2",
			"};"
		],
		"description": "Code snippet for struct"
	},
	"switch": {
		"prefix": "switch",
		"body": [
			"switch (${switch_on})",
			"{",
			"default:",
			"    break;$1",
			"}"
		],
		"description": "Code snippet for switch statement"
	},
	"switc": {
		"prefix": "sw",
		"body": [
			"switch($1)",
			"{",
			"    {",
			"    case $2:",
			"        $3",
			"        break;",
			"    default:",
			"        ",
			"        break;",
			"    }",
			"}",
		],
		"description": "switch(){}"
	},
	"switch2": {
		"prefix": "switch",
		"body": [
			"switch($1){",
			"{",
			"    case $2:",
			"        $3",
			"        break;",
			"    default:",
			"        ",
			"        break;",
			"}"
		],
		"description": "switch(){}"
	},
	"case": {
		"prefix": "ca",
		"body": [
			"case $1:",
			"    $3",
			"    break;"
		],
		"description": "case:break;"
	},
	"case2": {
		"prefix": "case",
		"body": [
			"case $1:",
			"    $3",
			"    break;"
		],
		"description": "case:break;"
	},
	"union": {
		"prefix": "union",
		"body": [
			"union ${MyUnion}",
			"{",
			"    $1",
			"};"
		],
		"description": "Code snippet for union"
	},
	"#inc": {
		"prefix": "#inc",
		"body": [
			"#include \"$1\""
		],
		"description": "Code snippet for #include \" \""
	},
	"#inc<": {
		"prefix": "#inc<",
		"body": [
			"#include <$1>"
		],
		"description": "Code snippet for #include \" \""
	},
	"#def": {
		"prefix": "#def",
		"body": [
			"#define \"$1\" \"$2\" "
		],
		"description": "Code snippet for #define \" \""
	},
	"add  fun(){}": {
		"prefix": "fun",
		"body": [
			"${1:functionname}(${2:void})",
			"{",
			"    $3",
			"}"
		],
		"description": "add @funtionname(@arg){}"
	},
	"add fun(){}": {
		"prefix": "fu",
		"body": [
			"${1:functionname}(${2:args})",
			"{",
			"    $3",
			"}"
		],
		"description": "add @funtionname(@arg){}"
	}

推荐一些常用的Markdown文本编辑器

MarkdownPad

官网

  • Windows

Cmd Markdown

官网

  • Windows
  • Linux
  • Web

Dillinger

官网

  • Web

MaHua

官网

  • Web

马克飞象

官网

  • Web

小书匠编辑器

官网

  • Mac
  • Windows
  • Linux
  • Web

SublimeText

官网

  • Mac
  • Windows
  • Linux

Atom

官网

  • Mac
  • Windows
  • Linux

Smark

官网

  • Windows
  • Linux

MdCharm

官网

  • Windows
  • Linux

Miu

官网

  • Windows

GitBook Editor

官网

  • Mac
  • Windows
  • Linux

Mou

官网

  • Mac

Typora

官网

  • Mac

Byword

官网

  • Mac

Ulysses

官网

  • Mac

Typed

官网

  • Mac

Editor.md

官网

  • Mac
  • Windows
  • Web

发现更多有趣的好玩的,欢迎关注我的公众号:toolpool

Linux终端下面的音乐播放器MOC

Linux终端下面的音乐播放器MOC

下载地址

下载之后,解压使用命令对其进行编译与安装./configure && make && make install

本人比较推荐使用命令行来进行安装

sudo apt-get install moc

如果想播放更多格式的音频文件,则要另外安装一些额外解码器

sudo apt-get install moc-ffmpeg-plugin

安装完之后使用命令mocp

打开音乐终端

然后按h来查看帮助文档

T来切换播放器的主题

如果遇到使用命令安装不了的情况,请自觉切换源,本人就是在安装不了的情况下然后测试服务器速度,然后更具速度选出最优的源点,才能正常安装的,如果有此情况的朋友,请自己进入软件设置、软件中心切换源地址。

Day11-Atom

Markdown代码不同步预览

安装Markdown-Preview-Plus

再安装

apm install markdown-scroll-sync

键位冲突

查找冲突的键位
例如 Ctrl+c

Setting->Keybindings->your-keymap-file

然后对着表格在your-keymap-file里面编辑你想要的功能,加上单引号,代码如下:

  'ctrl-c':	'core:copy'

  'ctrl-v':   'core:paste'

cpp代码模板

{
	// Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	"for": {
		"prefix": "for",
		"body": [
			"for (${size_t} ${i} = ${1:0}; ${i} < ${2:length}; ${i}++)",
			"{",
			"	$3",
			"}"
		],
		"description": "Code snippet for 'for' loop"
	},
	"forr": {
		"prefix": "forr",
		"body": [
			"for (int ${i} = ${1:length} - 1; ${i} >= ${2:0}; ${i}--)",
			"{",
			"	$3",
			"}"
		],
		"description": "Code snippet for reverse 'for' loop"
	},
	"do": {
		"prefix": "do",
		"body": [
			"do",
			"{",
			"	$1",
			"} while($2);"
		],
		"description": "Code snippet for do...while loop"
	},
	"while": {
		"prefix": "while",
		"body": [
			"while ($1)",
			"{",
			"	$2",
			"}"
		],
		"description": ""
	},
	"foreach": {
		"prefix": "foreach",
		"body": [
			"for(auto ${var} : ${collection_to_loop})",
			"{",
			"	$1",
			"}"
		],
		"description": "Code snippet for range-based for loop (c++11) statement"
	},
	"if": {
		"prefix": "if",
		"body": [
			"if ($1)",
			"{",
			"	$2",
			"}"
		],
		"description": "Code snippet for if statement"
	},
	"else": {
		"prefix": "else",
		"body": [
			"else",
			"{",
			"	$1",
			"}"
		],
		"description": "Code snippet for else statement"
	},
	"else if": {
		"prefix": "else if",
		"body": [
			"else if ($1)",
			"{",
			"	$2",
			"}"
		],
		"description": "Code snippet for else-if statement"
	},
	"enum": {
		"prefix": "enum",
		"body": [
			"enum ${MyEnum}",
			"{",
			"	$1",
			"};"
		],
		"description": "Code snippet for enum"
	},
	"enum class": {
		"prefix": "enum class",
		"body": [
			"enum class ${MyClass} { };"
		],
		"description": "Code snippet for enum class (c++11)"
	},
	"class": {
		"prefix": "class",
		"body": [
			"class ${MyClass}",
			"{",
			"public:",
			"	${MyClass}();",
			"	${MyClass}(${MyClass} &&) = default;",
			"	${MyClass}(const ${MyClass} &) = default;",
			"	${MyClass} &operator=(${MyClass} &&) = default;",
			"	${MyClass} &operator=(const ${MyClass} &) = default;",
			"	~${MyClass}();",
			"",
			"private:",
			"	$1",
			"};",
			"",
			"${MyClass}::${MyClass}()",
			"{",
			"}",
			"",
			"${MyClass}::~${MyClass}()",
			"{",
			"}"
		],
		"description": "Code snippet for class"
	},
	"classi": {
		"prefix": "classi",
		"body": [
			"class ${MyClass}",
			"{",
			"public:",
			"	${MyClass}() = default;",
			"	${MyClass}(${MyClass} &&) = default;",
			"	${MyClass}(const ${MyClass} &) = default;",
			"	${MyClass} &operator=(${MyClass} &&) = default;",
			"	${MyClass} &operator=(const ${MyClass} &) = default;",
			"	~${MyClass}() = default;",
			"",
			"private:",
			"	$1",
			"};"
		],
		"description": "Code snippet for class with inline constructor/destructor"
	},
	"interface": {
		"prefix": "interface",
		"body": [
			"__interface I${Interface}",
			"{",
			"	$1",
			"};"
		],
		"description": "Code snippet for interface (Visual C++)"
	},
	"namespace": {
		"prefix": "namespace",
		"body": [
			"namespace ${MyNamespace}",
			"{",
			"	$1",
			"}"
		]
	},
	"#ifdef": {
		"prefix": "#ifdef",
		"body": [
			"#ifdef ${DEBUG}",
			"$1",
			"#endif // ${DEBUG}"
		],
		"description": "Code snippet for #ifdef"
	},
	"#ifndef": {
		"prefix": "#ifndef",
		"body": [
			"#ifndef ${1:1}",
			"$2",
			"#endif // !$1"
		],
		"description": "Code snippet for #ifndef"
	},
	"#if": {
		"prefix": "#if",
		"body": [
			"#ifdef ${1:0}",
			"$2",
			"#endif // $1"
		],
		"description": "Code snippet for #if"
	},
	"struct": {
		"prefix": "struct",
		"body": [
			"struct ${MyStruct}",
			"{",
			"	$1",
			"};"
		],
		"description": "Code snippet for struct"
	},
	"switch": {
		"prefix": "switch",
		"body": [
			"switch (${switch_on})",
			"{",
			"default:",
			"	break;$1",
			"}"
		],
		"description": "Code snippet for switch statement"
	},
	"try": {
		"prefix": "try",
		"body": [
			"try",
			"{",
			"	",
			"}",
			"catch (const std::exception&)",
			"{",
			"	$1",
			"}"
		],
		"description": "Code snippet for try catch"
	},
	"union": {
		"prefix": "union",
		"body": [
			"union ${MyUnion}",
			"{",
			"	$1",
			"};"
		],
		"description": "Code snippet for union"
	},
	"cout": {
		"prefix": "cout",
		"body": [
			"std::cout << \"${1:/* message */}\" << std::endl;"
		],
		"description": "Code snippet for printing to std::cout, provided the header is set"
	},
	"#inc": {
		"prefix": "#inc",
		"body": [
			"#include \"$1\""
		],
		"description": "Code snippet for #include \" \""
	},
	"#inc<": {
		"prefix": "#inc<",
		"body": [
			"#include <$1>"
		],
		"description": "Code snippet for #include \" \""
	},
	"#def": {
		"prefix": "#def",
		"body": [
			"#define \"$1\" \"$2\" "
			],
		"description": "Code snippet for #define \" \""
	}
}

Linux安装OBS推流软件

For Ubuntu 14.04 LTS, FFmpeg is not officially included so you will need a specific PPA:

  sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
  sudo apt-get update && sudo apt-get install ffmpeg

For Ubuntu 15.04 and following versions, FFmpeg is officially included:

  sudo apt-get install ffmpeg

Then you can install OBS with the following commands:

  sudo add-apt-repository ppa:obsproject/obs-studio
  sudo apt-get update && sudo apt-get install obs-studio

屏幕录像软件

camtasia中文网下载最新版软件

断网的情况下使用

CYNTE-LZ29A-CKLCC-CAS5Y-DRFAD

激活

经过以上操作已经不会出现提示剩余30天的字样了,但是当你录制视频之后想导出视频的时候他又给你检测出来不是正式版,这时候要怎么办呢?

1)找到RegInfo.ini文件,路径:C:\ProgramData\TechSmith\Camtasia Studio 9

2)记事本打开RegInfo.ini,可以看到注册配置文件:

[RegistrationInfo]
ValidationData3=1
RegistrationKey=
RegisteredTo=
ValidationData1=
ValidationData2=0

这里RegistrationKey就是注册码,RegistrationKey就是注册用户名。奉上神key一枚,CYNTE-LZ29A-CKLCC-CAS5Y-DRFAD。多用户版,用户名可以任意填写。例如:

[RegistrationInfo]
ValidationData3=1
RegistrationKey=CYNTE-LZ29A-CKLCC-CAS5Y-DRFAD
RegisteredTo=shawn
ValidationData1=
ValidationData2=0

保存后右键修改文件权限为只读。

LinuxMint18使用感受

LinuxMint18使用感受

本人最早使用的linux的系统就是大学实验室里面的hat5,再到后面自己折腾的Ubuntu
从14.04到17.10各个版本都玩过,其中遇到很多坑也是自己一步一步的解决的。前不久我在youtube上面看了一个关于linux发行版本的排行榜,看到好几个视频都是说Mint版排第一,所以这几天试了玩一下这个系统。结果真没有让我失望,真的是我玩的那么多linux系统里面最好用的一个。无论是界面还是自定义的功能,都远超于我之前的系统。

与Ubuntu相比有那些区别

  • 左边没有启动项

没有占空间整体效果没有那么丑了,之前Ubuntu虽然可以用软件美化布局,但是整体的风格偏黄给我的感觉很丑。

  • 状态栏显示在下面

以前状态栏显示和Mac一样显示在上面,现在显示在下面感觉眼睛好受不少

  • 状态栏还有添加部件的功能

显示网络实时速率,还有内存,还有当前的聊天窗口,还有剪贴板多层级的内容

  • 支持自定义快捷键

一开始玩这个系统的时候,每次启动终端都只能用鼠标去启动器里面去找,很麻烦,后面在自定义快捷键的地方本来就预设有ctrl+shift+t,只要勾选就可以了

  • 自带Esc和CapsLock按键互换

我喜欢使用Vim编辑,所以电脑每一种系统我最先做的都是把Esc和CapsLock键互换。网上有很多切换按键的教程,但很多都是临时的,没有能解决我的需求,后面ubuntu也找到了满足自己需求的解决方法,以下分享给大家

Ubuntu的解决方法

最近确定在网上再找找办法解决,最后找到了这个方法dconf-editor,使用这个修改切换中英文都不会发生改变,修改是永久的,为了下次修改方便,特地在此记录下,如果对他人有所帮助那再好不过了。按照提示直接sudo apt install dconf-editor进行安装,接着运行dconf-editor命令启动图形界面,选择org >> gnome >> desktop >> input-sources,修改xkb-options为['caps:swapescape'],如下图:

LinuxMint18的解决方法:

click System Settings
keyboard layout
options...(lower right hand corner)
caps lock key behaviour (4th down)
Scroll down and choose "Swap ESC and Caps Lock".
  • 支持Lantern

Lantern在linux下只有Ubuntu版本,碰巧LinuxMint版本和Ubuntu内核类似,结果我试了一下还真能够使用

  • 系统自带桌面软件风格切换功能

提供多种风格给用户选择,用户可以根据自己的喜好进行修改

  • 系统自带Nvidia驱动

之前在Ubuntu下还要另外下载Nvidia驱动软件,现在系统自带该软件用户可根据自己显卡选择合适自己的显卡驱动

  • 文件显示

文件显示可以想mac还有windows下面一样进行归类区分,看起来比较方便

  • 自带软件包管理

LinuxMint18遇到的问题和解决方案分享

最开始是安装Chrome的时候遇到的问题

安装命令

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get -y install google-chrome-beta

问题:

[0807/144244.712736:FATAL:nss_util.cc(627)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required
Please upgrade to the latest NSS, and if you still get this error,
contact your distribution maintainer.
  • 方法一:chrome 版本降低
卸载目前的chrome
https://www.slimjet.com/chrome/google-chrome-old-version.php 下载相应的chrome旧版本安装。
  • 方法2 : update NSS(推荐)
sudo apt-get install libnss3
每次打开Chrome都会询问KDE Wallet请求的解决办法

编辑文件~/.kde/share/config/kwalletrc,追加内容:

[Auto Deny]
kdewallet=Google Chrome
LinuxMint18安装OBS

For Ubuntu 14.04 LTS, FFmpeg is not officially included so you will need a specific PPA:

  sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
  sudo apt-get update && sudo apt-get install ffmpeg

For Ubuntu 15.04 and following versions, FFmpeg is officially included:

  sudo apt-get install ffmpeg

Then you can install OBS with the following commands:

  sudo add-apt-repository ppa:obsproject/obs-studio
  sudo apt-get update && sudo apt-get install obs-studio

感觉在Linux下面使用OBS推流软件比在Windows上面好很多,一点都不觉得卡,而且上传速度很快很稳定。

最后希望大家可以喜欢这个系统,如果遇到什么问题我能帮的上的话,可以探讨一下

mint中搜狗输入法的候选词有时候会显示不全,解决方法


如上所述,在非KDE桌面环境下,如果安装了fcitx-module-kimpanel,可能会导致Fcitx输入中文时不显示候选词框,移除该组件,然后重启Fcixt。

$ sudo apt remove fcitx-module-kimpanel

Day03-Chrome插件推荐

1.净网大师 国内去广告神兵利器

2.surfingkeys Chrome 个人认为最厉害的插件,浏览网页时根本不需要鼠标

3.octotree Github阅读代码利器

4.tampermonkey 脚本管理工具,让你的Chrome屌到没有朋友

脚本地址

Greasy Fork 国内插件合集比较多,个人比较推荐

Userscripts

OpenUserJS

个人比较推荐的插件

MiniblogImgPop -微博浮图

super-preloaderplus-one

Download YouTube Videos as MP4

闲鱼无刷新加载翻页(预读)

百度网盘直接下载助手

百度网盘 Add Aria2

网盘自动填写密码

如果下载到的是js文件,复制里面的代码,然后右键tempermonkey图标-create a new script,粘贴

5.极简图床 七牛云图床,可以采集图片只能上传到服务器

6.Stylish 主题安装管理系统

7.Postman 网络请求调试工具

8.uBlock-Origin Chrome去广告插件

9.Momentum Chrome New Tab,自带TODO

10.LastPass 密码存储工具,懒人必备

11.JsonView Json解析工具

12.Avatars-For-Github Github头像显示插件

解决Chrome字体模糊的方法

借助主题插件Stylish

*{font-weight:500!important;}
*{font-family: "思源黑体 CN Regular", "思源黑体 CN Regular" !important; }

Chrome设置如下

目前本人用的配置如下

* {
    font-weight: 500!important;
}
* {
    font-family: "微软雅黑", "微软雅黑" !important;
}

Ubuntu安装扁平化主题Flatabulous

不知道大家对Ubuntu自带的主题效果怎么看,反正我自己觉得自带的主题看起来挺难受的,所以网上找了许多法子,终于把主题美化成自己喜欢的样子。

Flatabulous: 一个超好看的扁平化 Ubuntu 桌面主题

安装此主题步骤:

一、TweeakTool

sudo add-apt-repository ppa:tualatrix/ppa  
sudo apt-get update
sudo apt-get install ubuntu-tweak

该工具是用来设置各种Ubuntu偏好使用的

二、安装Flatabulous

下载地址
或者直接在Github上 Clone下来

https://github.com/anmoljagetia/Flatabulous

把下载下来的zip包解压,移动到/usr/share/themes/下

sudo mv Flatabulous-master /usr/share/themes/

三、安装扁平化图标ultra-flat-icons

sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install ultra-flat-icons

或者到http://ppa.launchpad.net/noobslab/icons/ubuntu/pool/main/u/ultra-flat-icons/自己下载安装

注意,在Ubuntu15.04会提示找不到ultra-flat-icons这个包

解决方法:在软件和更新中把ultra-flat-icons源中的vivid改成trusty,即可安装成功,最后记得改回来过

或者你也可以运行sudo apt-get install ultra-flat-icons-orange或者 sudo apt-get install ultra-flat-icons-green

根据你自己喜欢的颜色选择。

最后完成以上设置的效果图

Markdown一些常用的方法

Markdown图片样式固定长度

复制到图床图片的结尾

?imageMogr2/thumbnail/700x

Markdown图片样式固

  • 标签更改法:将” ! [mark] (图片链接) ” 改为 ” < img src=”图片链接” width=700 /> “

  • 七牛更改法:将” ! [mark] (图片链接) ” 改为 ” ! [mark] (图片链接?imageMogr2/thumbnail/700x) “,如果开启了MPic的图片瘦身,把链接最后的”?imageslim”删掉


如果不是自己个人空间的图,则无效

图片居中样式

(Github网站默认不能使用该属性,编辑器或者其他网站可以)

<div align=center>
![]()
</div>
![](http://omvbl46i3.bkt.clouddn.com/17-5-5/79745493-file_1493956320262_5fe6.png?imageMogr2/thumbnail/300)

表格模板

评分 名称 功能简述 官网 破解版
★★★★☆ 11 22 官网 下载地址
★★★★★ 11 22 官网 下载地址

Linux知识笔记

即使终端仿真器没有运行,在后台仍然有几个终端会话运行着。它们叫做虚拟终端 或者是虚拟控制台。在大多数 Linux 发行版中,这些终端会话都可以通过按下 Ctrl-Alt-F1Ctrl-Alt-F6 访问。当一个会话被访问的时候, 它会显示登录提示框,我们需要输入用户名和密码。要从一个虚拟控制台转换到另一个, 按下 Alt 和 F1-F6(中的一个)。返回图形桌面,按下 Alt-F7

gh-md-toc

gh-md-toc

gh-md-toc — is for you if you want to generate TOC for README.md or
GitHub's wiki page and don't want to install any additional software.

It's my try to fix a problem:

gh-md-toc is able to process:

  • stdin
  • local files (markdown files in local file system)
  • remote files (html files on github.com)

gh-md-toc tested on Ubuntu, and macOS High Sierra (gh-md-toc release 0.4.9). If you want it on Windows, you
better to use a golang based implementation:

It's more solid, reliable and with ability of a parallel processing. And
absolutely without dependencies.

Build Status

Table of contents

Installation

$ wget https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc
$ chmod a+x gh-md-toc

Usage

STDIN

Here's an example of TOC creating for markdown from STDIN:

➥ cat ~/projects/Dockerfile.vim/README.md | ./gh-md-toc -
  * [Dockerfile.vim](#dockerfilevim)
  * [Screenshot](#screenshot)
  * [Installation](#installation)
        * [OR using Pathogen:](#or-using-pathogen)
        * [OR using Vundle:](#or-using-vundle)
  * [License](#license)

Local files

Here's an example of TOC creating for a local README.md:

➥ ./gh-md-toc ~/projects/Dockerfile.vim/README.md                                                                                                                                                Вс. марта 22 22:51:46 MSK 2015

Table of Contents
=================

  * [Dockerfile.vim](#dockerfilevim)
  * [Screenshot](#screenshot)
  * [Installation](#installation)
        * [OR using Pathogen:](#or-using-pathogen)
        * [OR using Vundle:](#or-using-vundle)
  * [License](#license)

Remote files

And here's an example, when you have a README.md like this:

And you want to generate TOC for it.

There is nothing easier:

➥ ./gh-md-toc https://github.com/ekalinin/envirius/blob/master/README.md

Table of Contents
=================

  * [envirius](#envirius)
    * [Idea](#idea)
    * [Features](#features)
  * [Installation](#installation)
  * [Uninstallation](#uninstallation)
  * [Available plugins](#available-plugins)
  * [Usage](#usage)
    * [Check available plugins](#check-available-plugins)
    * [Check available versions for each plugin](#check-available-versions-for-each-plugin)
    * [Create an environment](#create-an-environment)
    * [Activate/deactivate environment](#activatedeactivate-environment)
      * [Activating in a new shell](#activating-in-a-new-shell)
      * [Activating in the same shell](#activating-in-the-same-shell)
    * [Get list of environments](#get-list-of-environments)
    * [Get current activated environment](#get-current-activated-environment)
    * [Do something in environment without enabling it](#do-something-in-environment-without-enabling-it)
    * [Get help](#get-help)
    * [Get help for a command](#get-help-for-a-command)
  * [How to add a plugin?](#how-to-add-a-plugin)
    * [Mandatory elements](#mandatory-elements)
      * [plug_list_versions](#plug_list_versions)
      * [plug_url_for_download](#plug_url_for_download)
      * [plug_build](#plug_build)
    * [Optional elements](#optional-elements)
      * [Variables](#variables)
      * [Functions](#functions)
    * [Examples](#examples)
  * [Example of the usage](#example-of-the-usage)
  * [Dependencies](#dependencies)
  * [Supported OS](#supported-os)
  * [Tests](#tests)
  * [Version History](#version-history)
  * [License](#license)
  * [README in another language](#readme-in-another-language)

That's all! Now all you need — is copy/paste result from console into original
README.md.

And here is a result:

Moreover, it's able to work with GitHub's wiki pages:

➥ ./gh-md-toc https://github.com/ekalinin/nodeenv/wiki/Who-Uses-Nodeenv

Table of Contents
=================

  * [Who Uses Nodeenv?](#who-uses-nodeenv)
    * [OpenStack](#openstack)
    * [pre-commit.com](#pre-commitcom)

Multiple files

It supports multiple files as well:

➥ ./gh-md-toc \
    https://github.com/aminb/rust-for-c/blob/master/hello_world/README.md \
    https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md \
    https://github.com/aminb/rust-for-c/blob/master/primitive_types_and_operators/README.md \
    https://github.com/aminb/rust-for-c/blob/master/unique_pointers/README.md

  * [Hello world](https://github.com/aminb/rust-for-c/blob/master/hello_world/README.md#hello-world)

  * [Control Flow](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#control-flow)
    * [If](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#if)
    * [Loops](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#loops)
    * [For loops](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#for-loops)
    * [Switch/Match](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#switchmatch)
    * [Method call](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#method-call)

  * [Primitive Types and Operators](https://github.com/aminb/rust-for-c/blob/master/primitive_types_and_operators/README.md#primitive-types-and-operators)

  * [Unique Pointers](https://github.com/aminb/rust-for-c/blob/master/unique_pointers/README.md#unique-pointers)

Combo

You can easily combine both ways:

➥ ./gh-md-toc \
    ~/projects/Dockerfile.vim/README.md \
    https://github.com/ekalinin/sitemap.s/blob/master/README.md

  * [Dockerfile.vim](~/projects/Dockerfile.vim/README.md#dockerfilevim)
  * [Screenshot](~/projects/Dockerfile.vim/README.md#screenshot)
  * [Installation](~/projects/Dockerfile.vim/README.md#installation)
        * [OR using Pathogen:](~/projects/Dockerfile.vim/README.md#or-using-pathogen)
        * [OR using Vundle:](~/projects/Dockerfile.vim/README.md#or-using-vundle)
  * [License](~/projects/Dockerfile.vim/README.md#license)

  * [sitemap.js](https://github.com/ekalinin/sitemap.js/blob/master/README.md#sitemapjs)
    * [Installation](https://github.com/ekalinin/sitemap.js/blob/master/README.md#installation)
    * [Usage](https://github.com/ekalinin/sitemap.js/blob/master/README.md#usage)
    * [License](https://github.com/ekalinin/sitemap.js/blob/master/README.md#license)

Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)

Auto insert and update TOC

Just put into a file these two lines:

<!--ts-->
<!--te-->

And run:

$ ./gh-md-toc --insert README.test.md

Table of Contents
=================

   * [gh-md-toc](#gh-md-toc)
   * [Installation](#installation)
   * [Usage](#usage)
      * [STDIN](#stdin)
      * [Local files](#local-files)
      * [Remote files](#remote-files)
      * [Multiple files](#multiple-files)
      * [Combo](#combo)
   * [Tests](#tests)
   * [Dependency](#dependency)

!! TOC was added into: 'README.test.md'
!! Origin version of the file: 'README.test.md.orig.2018-02-04_192655'
!! TOC added into a separate file: 'README.test.md.toc.2018-02-04_192655'


Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)

Now check the same file:

➜ grep -A15 "<\!\-\-ts" README.test.md
<!--ts-->
   * [gh-md-toc](#gh-md-toc)
   * [Table of contents](#table-of-contents)
   * [Installation](#installation)
   * [Usage](#usage)
      * [STDIN](#stdin)
      * [Local files](#local-files)
      * [Remote files](#remote-files)
      * [Multiple files](#multiple-files)
      * [Combo](#combo)
      * [Auto insert and update TOC](#auto-insert-and-update-toc)
   * [Tests](#tests)
   * [Dependency](#dependency)

<!-- Added by: <your-user>, at: 2018-02-04T19:38+03:00 -->

<!--te-->

Next time when your file will be changed just repeat the command (./gh-md-toc --insert ...) and TOC will be refreshed again.

Tests

Done with bats.
Useful articles:

How to run tests:

➥ make test                                                                                                                                                                                                      Пн. марта 23 13:59:27 MSK 2015
 ✓ TOC for local README.md
 ✓ TOC for remote README.md
 ✓ TOC for mixed README.md (remote/local)
 ✓ TOC for markdown from stdin
 ✓ --help
 ✓ --version

6 tests, 0 failures

Dependency

  • curl or wget
  • awk (mawk, gawk is not supported)
  • grep
  • sed
  • bats (for unit tests)

Tested on Ubuntu 14.04/14.10 in bash/zsh.

Day01-初识Git与Github

Git

说到Git你或许不是了解,但是Linux系统你一定听过,Git就是Linux系统创始人林纳斯·托瓦兹一手创造出来的,奠定了他在编程界大神的地位。

Git的诞生

这是一个传奇故事,时间定格到2005年,当时linux再使用一个叫做BitKeeper的版本控制工具,BitKeeper开发商在这一年决定不再免费提供给linux社区使用,linus当即伸出了中指,于是两周后Git诞生了,一个月之内Linux的源码已经由Git托管。

Git的优点

git是国外开源版本库,不需要自己搭建服务器,你在上面搭建上传的工程代码都是公开的,谁都可以访问,可以设置团队成员分配修改的权限。如果要像SVN一样指定的人可以访问Git就需要收费了,SVN需要你有一台服务器,上面安装SVN Server实现版本控制

  • 快速

如果你每移动一下鼠标都要等待五秒,是不是很受不了?版本控制也是一样的,每一个命令多那么几秒钟,一天下来也会浪费你不少时间。Git的操作非常快速,你可以把时间用在别的更有意义的地方。

  • 离线工作

在没有网络的情况下如何工作?如果你用SVN或者CVS的话就很麻烦。而Git可以让你在本地做所有操作,提交代码,查看历史,合并,创建分支等等。

  • 回退

人难免犯错。我很喜欢Git的一点就是你可以“undo”几乎所有的命令。你可以用这个功能来修正你刚刚提交的代码中的一个问题或者回滚整个代码提交操作。你甚至可以恢复一个被删除的提交,因为在后端,Git几乎不做任何删除操作。

  • 省心

你有没有丢失过版本库?我有,而那种头疼的感觉现在还记忆犹新。而用Git的话,我就不必担心这个问题,因为任何一个人机器上的版本都是一个完整的备份。

  • 选择有用的代码提交

当你把纽带,冰块还有西红柿一起扔进搅拌机的时候至少有两个问题。第一,搅拌过后,没有人知道之前扔进去了些什么东西。第二,你不能回退,重新把西红柿拿出来。同样的,当你提交了一堆无关的更改,例如功能A加强,新增功能B,功能C修复,想要理清这一堆代码到底干了什么是很困难的。当然,当发现功能A出问题的时候,你无法单独回滚功能A。Git可以通过创建“颗粒提交”,帮你解决这个问题。“staging area”的概念可以让你决定到底那些东西需要提交,或者更新,精确到行。

  • 自由选择工作方式

使用Git,你可以同时和多个远程代码库连接,“rebase”而不是"merge"甚至只连接某个模块。但是你也可以选择一个**版本库,就像SVN那样。你依然可以利用Git的其他优点。

  • 保持工作独立

把不同的问题分开处理将有助于跟踪问题的进度。当你在为功能A工作的时候,其他人不应该被你还没有完成的代码所影响。分支是解决这个问题的办法。虽然其他的版本控制软件业有分支系统,但是Git是第一个把这个系统变得简单而快速的系统。

  • 随大流

虽然只有死于才随着波浪前进,但是很多时候聪明的程序员也是随大流的。越来越多的公司,开源项目使用Git,包括Ruby On Rails,jQuery,Perl,Debian,Linux Kernel等等。拥有一个强大的社区是很大的优势,有很多教程、工具。随着开源的热潮越来越汹涌,使得类似于Github这样子的开源网站,受到更多更多程序员的喜爱与青睐,Git是时代选择的必然结果。

Github

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。

Github趣事

2013年1月15日晚间,全球最大的社交编程及代码托管网站GitHub突然疑似遭遇DDOS攻击,访问大幅放缓,该网站管理员经过日志查询,发现是来自12306的抢票插件用户洪水般的访问导致GitHub出现问题。该事件加上当初知乎吵架事件,使得Github在国内的发展像炸开的锅一样,拦都拦不住。

Git的安装

  • Window

下载Git

https://git-scm.com/downloads

配置ssh key

ssh-keygen -t rsa -C "[email protected]"

然后连续按回车键3次

出现以上图片说明已经在本地创建好ssh key了
路径在C:\Users\admin.ssh

然后使用文本编辑器打开id_rsa.pub,然后把里边的内容完全复制

然后登陆Github官网

https://github.com

点击设置选项

然后把刚刚复制的ssh key复制进去

完成了以上步骤检测一下是否已经成功链接上Github

admin@iTgoyo-PC MINGW32 ~/Desktop
$  ssh -T [email protected]
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

输入yes


出现上面信息即本地连接Github已经成功

  • Mac OS
    基本和上面没差
    打开终端,输入
cd ~/.ssh
如果存在,先将已有的ssh备份,或者将新建的ssh生成到另外的目录下
如果不存在,通过默认的参数直接生成ssh:
ssh-keygen -t rsa -C [email protected](注册github时的email)
(输入完成后,按enter健即可,命令行会自动提示下面这一行👇,接下来的命令行一路按enter健即可)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/twer/.ssh/id_rsa):
Created directory '/Users/twer/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/twer/.ssh/id_rsa.
Your public key has been saved in /Users/twer/.ssh/id_rsa.pub.
The key fingerprint is:
18:16:11:c9:01:6c:48:09:7f:27:66:43:0d:7f:3f:84 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|.o.++=== |
|.ooo.+. . |
| ..* = E . |
| o = + o |
| . S o |
| . |
| |
| |
| |
+-----------------+

此时会在你的电脑里生成一个.ssh的文件,里面有你的ssh key的信息,如果需要复制这个信息,可以在命令行里输入 pbcopy < ~/.ssh/id_rsa.pub,这个是复制的命令,然后打开一个文本文件,粘贴即可

过程参考Windows

对于Github的初学者的建议

推荐两本Github入门

GitHub入门与实践

github-beginners

自我感觉刚入门Github的时候没必要逼着自已一定要使用命令行敲完代码,然后创建仓库,提交信息,上传代码。

因为图形化界面的Git工具很多

个人推荐官方的Github For Desktop

当然也有其他童鞋觉得SourceTree也是不错的选择,看自己爱好吧,工具而已,自己喜欢就好。

有童鞋反馈说Github For Desktop安装比较慢的问题,可以使用Lantern翻墙,如果你觉得速度不错,想办理会员版的话可以使用我的推荐码2CR4W2进行购买专业版,这样子我们都彼此会多获得三个月的会员时间

提交代码到仓库

  • 先在Github官网上创建自己的仓库

以下我拿桌面版的Github来进行演示

即可下载到本地

即可打开到本地Github项目的仓库

我们随意改变一下工程的内容,例如以下,我新增了一个txt文本文件

再点开客户端

此时客户端已经检测到内容的改变,当你想把本地的资源提交到远程的仓库时

同步完成了之后你就会发现Github仓库上面已经有你刚刚提交的信息了

推荐常见的Git客户端

1. GitKraken

  • 视觉交互和提示

  • 100%单机

  • 支持多个配置文件

  • 支持单点击撤销和重做功能

  • 内置的合并工具

  • 快速和直观的搜索工具

  • 很容易适应用户的工作空间,同时支持子模块和Gitflow

  • 与用户的GitHub的或Bitbucket帐户集成

  • 键盘快捷键以及其它更多。

官方网站:https://www.gitkraken.com/

2. Git-cola

Git-cola是一个功能强大的、可配置的用于Linux的Git客户端,为用户提供了时尚的GUI。它用Python编写的,并依据GPL许可证发布。

Git-cola接口包括一些可以根据用户愿望被隐藏和重新安排的协作工具。它还为用户提供了许多有用的快捷键。

它的附加功能包括:

  • 多个子命令

  • 自定义窗口设置

  • 配置和环境变量

  • 语言设定

  • 支持自定义的GUI设置

官方网站:http://git-cola.github.io/

3. SmartGit

SmartGit也是适用于Linux,Mac OS X和Windows的跨平台、功能强大又流行的GUI Git客户端。被称为是专业人士的Git,它能够让用户掌控日常的Git挑战,并通过高效的工作流程提高他们的生产力。

用户可以在他们自己的代码仓库或其他托管服务提供商中使用它。它具有以下出色的特点:

  • 支持Git pull请求和注释

  • 支持SVN仓库

  • 附带Git流,SSH客户端和文件比较/合并工具

  • 与GitHub,BitBucket和Atlassian Stash强烈整合

官方网站:http://www.syntevo.com/smartgit/

4. SourceTree

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。

SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

它具有以下出色的特点:

  • 通过一个简单的用户界面即可使用所有的Git命令

  • 通过一次单击,即可管理所有的Git库,无论是托管的还是本地的

  • 通过一次单击,即可进行commit、push、pull、merge等操作

  • 一些先进的功能,如补丁处理、rebase、shelve、cherry picking等

  • 可以连接到你托管在Bitbucket、Stash、Microsoft TFS或GitHub中的代码库

官方网站:https://www.sourcetreeapp.com/

npm更新出错的解决方法

错误信息如下:

npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! network request to https://registry.npmjs.org/npm failed, reason: socket hang up
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/itgoyo/.npm/_logs/2017-11-13T02_02_59_617Z-debug.log

解决方法:

npm config delete proxy
npm -g install [email protected]

Day05-开源协议的介绍

本人github:itgoyo,欢迎关注 (๑•́ ₃•̀๑)

太乱太多了?那就上一张简单明了的指示说明图

MPL (Mozilla Public License) 协议

MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对 源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:

  • MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个 豁口。

  • MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。

  • 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是 专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。

  • 对源代码的定义
    而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择 取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始 源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”

  • MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

英文原文:http://www.mozilla.org/MPL/MPL-1.1.html

Apache Licene 2.0 协议

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

  • 需要给代码的用户一份Apache Licence
  • 如果你修改了代码,需要在被修改的文件中说明。
  • 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
    Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

英文原文:http://www.apache.org/licenses/LICENSE-2.0.html

LGPL 协议

这是一份 GNU 较宽松公共许可证非正式的中文翻译。它不是自由软体基金会所发布,并且不能适用于使用 GNU LGPL 的软体 —— 只有 GNU LGPL 英文原文的版本才行。然而,我们希望这份翻译能帮助中文的使用者更了解 GNU LGPL。
GNU 较宽松公共许可证

1999.2, 第 2.1 版

版权所有 (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

  • 允许每个人复制和发布本授权文件的完整副本,但不允许对它进行任何修改。

[这是第一次发表的较宽松公共许可证 (Lesser GPL) 版本。它同时也可视为 GNU 函数库公共许可证 (GNU Library Public License) 第 2 版的后继者,故称为 2.1 版]

本版本由 Leo-Hong (leohca (at) yahoo.com) 翻译整理, Chao-Hong Liu 校正.

导言

大多数软体许可证决意剥夺您共享和修改软体的自由。相反的,GNU 通用公共许可证力图保证您共享和修改自由软体的自由 —— 保证自由软体对所有使用者都是自由的。

这个许可证,较宽松公共许可证,适用于一些由自由软体基金会与其他决定使用此许可证的软体作者,所特殊设计的软体套件 —— 象是函数库。您也可以使用它,但我们建议您事先仔细考虑,基于以下的说明是否此许可证或原来的通用公共许可证在任何特殊情况下均为较好的方案。

当我们谈到自由软体时,我们所指的是自由,而不是价格。我们的 GNU 通用公共许可证是设计用以确保使您有发布自由软体备份的自由(如果您愿意,您可以对此项服务收取一定的费用);确保您能收到程式原始码或者在您需要时能得 到它;确保您能修改软体或将它的一部分用于新的自由软体;而且还确保您知道您可以做上述的这些事情。

为了保护您的权利,我们需要作出限制:禁止任何人否认您上述的权利,或者要求您放弃这些权利。如果您发布软件的副本,或者对之加以修改,这些规定就转化为您的责任。

例如,如果您发布此函数库的副本,不管是免费还是收取费用,您必须将您享有的一切权利给予接受者;您必须确保他们也能收到或得到原始程式码;如果您将此函数库与其他的程式码连结,您必须提供完整的目的对象文件和程序(object file)给接受者,则当他们修改此函数库并重新编译过后,可以重新与目的档连结。您并且要将这些条款给他们看,使他们知道他们有这样的权利。

我们采取两项措施来保护您的权利: (1)用版权来保护函数库。并且,(2)我们提供您这份许可证,赋予您复制,发布和(或)修改这些函数库的法律许可。
为了保护每个发布者,我们需要非常清楚地让每个人明白,自由函数库是没有担保责任的。如果由于某人修改了函数库,并继续加以传播,我们需要它的接受者明白:他们所得到的并不是原始的版本。故由其他人引入的任何问题,对原作者的声誉将不会有任何的影响。

最后,由于软体专利不断地威胁自由软体的存在,我们希望商业公司无法藉由自专利持有者取得一个受限的许可证,而有效地限制自由软体的使用者。因此,我们坚持一个函数库所能取得的任何专利,必须与本许可证所声明的“完全自由使用”一致。
<20040222>
大部分的 GNU 软体,包括一些函数库,是受到原来的 GNU 通用公共许可证的保护。本许可证, GNU 较宽松通用公共许可证,适用于特殊设计的函数库,且与原来的通用公共许可证有很大的不同。我们在特定的函数库中使用它,以准许非自由的程式可以与这些函数 库连结。 当一个程式与一个函数库连结,不论是静态连结或使用共享函数库,二者的结合可以合理地说是结合的作品,一个原来的函数库的衍生品。因此,原来的通用公共许 可证只有在整个结合品满足其自由的标准时,才予许连结。较宽松通用公共许可证则以更宽松的标准允许其他程式码与本函数库连结。

我们称此许可证 "较宽松" 通用公共许可证,是因为它比起原来的通用公共许可证对使用者的自由做到较少的保护。在与非自由软体竞争时,它也提供其他自由软体的写作者较少的优势。这些 不利之处正是我们使用原来的通用公共许可证于许多函数库的理由。然而,较宽松的许可证可在某些特殊场合下带来好处。 例如,在少数情况下,可能会有特殊的需要而鼓励大家尽可能广泛地使用特定的函数库,因而使它成为实际上的标准。为了达到此目标,必须允许非自由的程式使用 此函数库。一个较常发生的情况是一个自由的函数库与一个被广泛使用的非自由函数库做相同的工作,在此情况下,限制只有自由软体可以使用此自由函数库不会有 多少好处,故我们如用了较宽松通用公共许可证。

在其他情况下,允许非自由程式使用特定的函数库,可以让更多的人们使用自由软体的大部分。例如,允许非自由程式使用 GNU C 函数库可以让更多的人们使用整个 GNU 作业系统,以及它的变形,GNU/Linux 作业系统。

尽管较宽松通用共公许可证对使用者的自由是较少的保护的,它却能确保与此函数库连结的程式的使用者拥有自由,而且具有使用修改过的函数库版本来执行该程式的必要方法。

以下是复制、发布、以及修改的精确条款与条件。请注意 "基于函数库的作品" 以及 "使用函数库的作品" 之间的差异:前者包含来自函数库修改过的原始码;而后者则必须与函数库结合才能执行。

有关复制,发布和修改的条款和条件

  1. 本许可证适用于任何软体函数库,或其他包含了由版权所有者加入的注意事项的程式,或其他有公信力的团体宣称其程式可以在较宽松通用公共许可证 (也称之为 "本许可证") 的条款下发布。每一位许可证接受者以 "您" 来称呼。

一个 "函数库" 意指一些软体函数的集合,以及或准备好的资料以方便与应用程式 (其使用了其中某些函数与资料) 连结形成可执行的程式。

以下,"函数库" 一词指的是任何在本条款下发布的这一类软体函数库或作品,一个 "基于本函数库的作品" 意指函数库或任何在版权法下的衍生作品:也就是说,一个包含了本函数库或其一部分的作品,可以是原封不动的,或经过修改的,和/或直接翻译成其他语言 的。(在下文中,翻译是不受限地包含在 "修改" 的条款中。)

作品的 "原始码" 意指对作品进行修改最优先择取的形式。对函数库而言,完整的原始码意指所有模组的所有原始程式,加上有关的介面的定义,加上控制函数库的安装和编译的 script。

本许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。使用本函数库来执行本程式的动作不受条款的限制,而程式的输出只有在其内容所构成的作品是基于本函数库时 (与在什么样的工具中使用本函数库来输出无关) ,这一条款才适用。以上是否为真则取决于本函数库具体用来做什么。

  1. 只要您在每一程式副本上明显和恰当地宣告版权声明和不承担担保的声明,并保持此许可证的声明和没有担保的声明完整无损,并和程式一起给其他每位程式接受者一份许可证的副本,您就可以用任何媒体复制和发布您收到的函数库的完整原始码。

您可以为转让副本的实际行动收取一定费用。您也可以选择提供担保以换取一定的费用。

  1. 只要您同时满足下面的所有条件,您就可以按前面第一款的要求修改函数库的一个或几个副本或它的任何部分,以此形成基于此函数库的作品,并且复制和发布这一经过修改的程式或作品:

被修改的作品本身必须是一个软体函数库。

您必须在修改过的档案中附有明确的说明:您修改了此一档案及任何修改的日期。

您必须让整个作品允许第三方在此许可证条款下可以免费使用。

如果修改过的函数库其某个设备使用到了「使用本函数库的应用程式」所提供的函数或资料表格,却不是当此设备被呼叫时以参数列传入时,则您必须确实做到,当应用程式不提供这样的函数或表格时,则此设备依旧能工作,且其执行的任何目的仍然有意义。
(例如,一个函数库的函数用来计算平方根,其目的是有完整的定义且与应用程式是无关的。因此, 2d 小节要求任何本函数会使用的,由应用程式所提供的函数或表格必须是选择性的:如果应用程式不提供的话,则计算平方根的函数必须依旧能计算平方根)

这些要求适用于整个修改过的作品。如果能够确定作品的一部分并非本函数库的衍生产品,且可以合理地单独考虑并将它与原作品分开的话,则当您将它作为独立的 作品发布时,它不受此许可证和其条款的约束。但是当您将这部分与基于本函数库的作品一同发布时,则整个套件将受到本许可证条款约束,其对于其他许可证持有 人的使用范围扩大到整个产品,也就是套件的每个部分,不管它是谁写的。

因此,本条款的意图不在于索取权利,或剥夺完全由您完成的作品的权利,而是履行权利来控制基于本函数库的集体作品或衍生作品的发布。 此外,将与本函数库无关的作品和本函数库 (或基于本函数库的作品) 一起放在贮存媒体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。

  1. 对于一个函数库的副本,您可以选择性地使用原来的 GNU 通用公共许可证上的条款来取代本许可证上的条款。如果您要这么做,您必须修改所有的参考到本许可证的注意事项,使它们指向原来的 GNU 通用公共许可证,第二版,以取代本许可证(如果有比第二版的原来的 GNU 通用公共许可证更新的版本出现的话,则如果您愿意的话可以特别指明使用新版)。请不要对这些注意事项做出其他的改变。

一旦在一个副本上做了这样的改变,则该副本就无法撤回这样的改变,故原来的 GNU 通用公共许可证将适用于所有后续的副本以及由此副本衍生出来的作品。

此一选择性适用于当您想要将一部分的函数库原始码复制到一个非函数库的程式使用时。

  1. 您可以以目标码或可执行形式复制或发布本函数库 (或符合第 2 款,基于本函数库的作品),只要您遵守前面的第 1、2 款,并同时提供完整的相关机器可读的原始码,而这些原始码必须在前面的第 1 与第 2 款条件下,在一般习惯上用来做软体交换的媒体上发布。

如果所发布的目标码是由指定的地点提供拷贝索取,那么由同一地点所提供等价的原始码拷贝索取可以算作原始码的发布,即使第三方不强求与目标码一起复制原始码。

  1. 一个程式若包含不经任何部分修改的函数库,但却是设计经由编译或连结的方式与本函数库一同工作者,称之为 "使用函数库的作品"。这样的一个作品,严格地说,并非本函数库的衍生作品,因而不在本许可证的范围之内。

然而,将 "使用函数库的作品" 与本函数库连结而产生可执行程式,则是本函数库的衍生品 (因为它包函了本函数库的一部分),而不是 "使用函数库的作品",因此其可执行程式包含在本许可证的范围内。第 6 款说明了发布此可执行程式的条款。

当 "使用函数库的作品" 使用了函数库部分的标头档内容时,则此作品即使其原始码不属于本函数库的衍生品,但其目标码仍然是。这一点是否为真特别在是否本作品可以在不需要本函数库即可连结,或者是否该作品本身也是一个函数库时特别明显。

如果这样的目标档只使用数字参数、资料结构层级与附属品、以及小巨集和小内□式 (小于或等于十行) ,则此目标档的使用是不受限的,不论是否它是合法的衍生作品。 (但可执行程式若包函此目标档以及一部分的函数库,仍然将在第 6 款的规定下)

否则的话,如果本作品是本函数库的衍生品,您必须在第 6 款的规定下发布该作品的目标码。任何包含该作品的可执行程式也在第 6 款的范围内,不论它们是否直接与本函数库连结。

  1. 做为上述条款的例外情况,您也可以将 "使用函数库的作品" 与本函数库结合或连结,以产生包含部分本函数库的作品,并在允许使用者自身使用时可以修改该作品,以及在对修改进行反组译除错的情况下,您可以依照您的选择发布该作品。

您必须在每个作品的副本突显出如下的注意事项:本函数库在作品中被使用,以及本函数库以及它的使用是在本许可证的规定下。您必须提供本许可证的副本。如果 该作品在执行时显示版权声明,您必须在其中包含本函数库的版权声明,以及指引使用者取得本许可证的副本。同时,您必须做到以下其中一件事:

必须将完整的机器可读的函数库原始码包含在该作品中,包括任何该作品使用到的改变 (这些改变必须在前述第 1 与第 2 款的要求下发布);而且,如果该作品是一个与函数库连结的「完整的、机器可□的 "使用函数库的作品"」,则要有目标码和/或原始码,如此使用者可以修改本函数库且可以重新连结,以产生包函修改过的函数库的修改过的可执行程式。 (理所当然的若使用者修改了函数库的档案定义内容时,则该作品不必然可以重新编译以使用修改过的定义。)

在与函数库连结时使用适当的分享函数库连结机制。一个适当的机制是: (1) 在执行时使用已存在于使用者的电脑中的函数库副本,而不是将函数库的函数复制到可执行程式里,以及 (2) 如果使用者安装了一份修改过的函数库,只要修改过的版本在介面上与该作品在编译连结时所用的版本是相容的,则该执行程式可以与修改过的函数库运作良好。

在该作品内提供书面报价,有效期不少于三年,以提供同样的使用者上述第 6a 款中的内容,费用不得超过该程式发布的实际成本。 如果所发布的作品是由指定的地点提供拷贝索取,则由同一地点提供上述内容的等价拷贝索取。

确定使用者已经收到该作品的一份复制,或是您已经寄给该使用者一份复制品。
对于一个可执行程式,其所需的 "使用函数库的作品" 的形式必须包括任何要从中再产生可执行程式时所需的资料与工具程式。然而,有一个特殊例外,其所发布的内容不需要包括任何一般与「可执行本程式的作业系统」的主要部分 (如编译器、核心等) 一起发布的部分 (不论是原始码或可执行码),除非这些组成部分和可执行作品结合在一起。

有一个可能情况是,这些要求与其他通常不与作业系统在一起的私有函数库的版权限制相抵触,这样的抵触表示您不能将它们与本函数库一起用于您发布的可执行程式中。

  1. 您可以将使用本函数库的函数库设备,以及其他不在本许可证范围内的函数库,对等地放入一个单独的函数库中,并在基于本函数库的作品以及其他函数库在其他状态下同意可以个别发布,以及您做到以下两点的情况下,您可以发布此结合的函数库:

将基于本函数库的作品单独不与其他函数库设备结合地,与此结合的函数库一同发布。该作品必须在上述条款的规定下发布。

在此结合的函数库中明显地指出其中一部分的作品是基于本函数库,并且说明那里可以找到同样不具结合形式的作品。
8. 除非您明确按许可证提出的要求去做,否则您不能复制、修改、转发许可证、与本函数库连结、和发布本函数库。任何试图用其他方式复制、修改、转发许可证、与 本函数库连结、和发布本函数库是无效的,而且将自动结束许可证赋予您的权利。然而,对那些从您那里按许可证条款得到副本和权利的人们,只要他们继续全面履 行条款,许可证赋予他们的权利仍然有效。

  1. 您没有在许可证上签字,因而您没有必要一定接受此一许可证。然而,没有任何其他东西赋予您修改和发布本函数库及其衍生作品的权利。如果您不接受许可证,这些行为是法律禁止的。因此,如果您修改或发布函数库 (或任何基于函数库的作品) ,您就表明您接受这一许可证以及它的所有有关复制、发布和修改本函数库或基于它的作品的条款和条件。

  2. 每当您重新发布函数库 (或任何基于函数库的作品) 时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制、发布、连结或修改本函数库的许可。您不可以强迫接受者履行除了这里赋予他们的权利之外的其他限制。您也没有强求第三方履行许可证条款的义务。

  3. 如果由于法院判决或违反专利的指控或任何其他原因 (不限于专利问题) 的结果,使得强加于您的条件 (不管是法院判决,协议书或其他) 和许可证的条件有冲突时,他们也不能令您背离许可证的条款。在您不能同时满足本许可证规定的义务及其他相关的义务来发布函数库时,则结果您只能够根本不发 布函数库。例如,如果某一专利许可证不允许所有直接或间接从您那里接受副本的人们,在不付专利费的情况下重新发布函数库,唯一能同时满足两方面要求的办法 是停止发布函数库。

如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分,并将这部分条款作为整体用于其他环境。 本条款的目的不在于引诱您侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软体发布系统的完整性。它是通过公共许可证 的应用来实现的。许多人已依赖同是出自此系统的应用程式,经由此系统发布大量自由软体而做出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统 发布软体,许可证持有人不能强加这种选择。

本节的目的在于明确说明许可证其余部分可能产生的结果。

  1. 如果由于专利或者由于有版权的介面问题使函数库在某些国家的发布和使用受到限制,则在许可证约束下的原始版权拥有者可以增加发布地区的限制条款,将这些国 家明确排除在外,并在这些国家以外的地区发布函数库。在这种情况下,许可证套件含的限制条款和许可证正文一样有效。 13. 自由软体基金会可能随时出版较宽松通用公共许可证的修改版或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差 别。

每一版本都有不同的版本号。如果函数库指定可适用的许可证版本号以及 "任何更新的版本" ,您有权选择遵循指定的版本或自由软体基金会以后出版的新版本。如果函数库未指定许可证版本,您可选择自由软体基金会已经出版的任何版本。 14. 如果您愿意将函数库的一部分结合到其他自由程式中,而它们的发布条件不同,请写信给作者,要求准予使用。如果是自由软体基金会加以版权保护的软体,写信给 自由软体基金会,我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导,这两个主要目标是:我们的自由软体的衍生作品继续保持自由状态,以及从 整体上促进软体的共享和重复利用。

没有担保
15. 由于函数库准予免费使用,在适用法准许的范围内,对函数库没有担保。除非另有书面说明,版权所有者和/或其他提供函数库的人们 "一样" 不提供任何类型的担保,不论是明确的,还是隐含的,包括但不限于可销售和适合特定用途的隐含保证。全部的风险,如函数库的质量和性能问题都由您来承担。如果函数库出现缺陷,您应当承担所有必要的服务、修复和改正的费用。

  1. 除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布函数库的人们都不对您的损失负有任何责任。包括由于使用或不能使用函数库引起的任何一般的、特殊的、偶然发生的或重大的损失 (包括但不限于数据的损失,或者数据变得不精确,或者您或第三方的持续的损失,或者函数库不能和其他软体协调运行等) 。即使版权所有者和其他人提到这种损失的可能性也不例外。

如何将这些条款用到您新的函数库

如果您开发了新函数库,而且您需要它得到公众最大限度的利用,要做到这一点的最好办法是将它变为自由软体,使得每个人都能在遵守本条款 (或者是在原来的通用公共许可证的条款) 的基础上对它进行修改和重新发布。

为了做到这一点,请将函数库附上下列声明。最安全的方式是将它放在每个原始码档案的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有 "版权所有" 行以及在什么地方能看到声明全文的说明。

用一行空间描述函数库的名称和它的用途简单说明
版权所有 (C) 19XX 作者姓名
这一函数库是自由软体,您可以遵照自由软体基金会出版的 GNU 较宽松通用公共许可证条款来修改和重新发布这一程式,或者用许可证的第二版,或者 (根据您的选择) 用任何更新的版本。

发布这一函数库的目的是希望它有用,但没有任何担保。甚至没有适合特定目的而隐含的担保。更详细的情况请参阅 GNU 较宽松通用公共许可证。

您应该已经和函数库一起收到一份 GNU 较宽松通用公共许可证的副本。如果还没有,写信给:

Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

此外还应加上如何藉由电子邮件或一般信件与您保持联系的信息。
如果需要,您应该取得您的上司 (如果您是程式员) 或您的学校签署放弃函数库版权的声明。下面只是一个例子,您应该改变相应的名称:

Yoyodyne 公司以此方式放弃 James Random Hacker 所写的 `Frob' 函数库 (用以扭转 knobs 的函数库) 的全部版权利益。

Ty coon 签名,1990.4.1

Ty coon 副总裁

BSD 开源协议(original BSD license、FreeBSD license、Original BSD license)

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销 售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者 二次开发。

MIT(MIT)

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其它的限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。MIT协议又称麻省理工学院许可证,最初由麻省理工学院开发。被授权人权利:1、被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。2、被授权人可根据程式的需要修改授权条款为适当的内容。被授权人义务:在软件和软件的所有副本中都必须包含版权声明和许可声明。

Putty+Xming在Windows端显示Linux图形化界面GUI

一、Linux配置

#apt-get install openssh-server

二、Windows

下载并安装Xming客户端
http://sourceforge.net/projects/xming

完了之后出现sshd的字样表明服务器开启成功。

安装并启动, 无需配置
下载并安装putty
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

三、配置Putty

首先获取Linux服务器的ip地址

在终端输入: ifconfig 即可查看。

填写配置信息

Putty中开启X11支持

Linux里边的ssh文件配置也要打开

要允许Linux主机上的SSH X转发,查看 /etc/ssh/sshd_config 文件,加入以下一行,

X11Forwrding yes

到此配置就结束了,想要测试是否成功的话,可以在终端输入:xclock

如果出现一个悬浮的时钟则表明配置成功了,或者你可以打开Linux上面的一张图片如果显示也代表成功了,命令如下

eog xxx.jpg

Kindle传输软件Calibre

sudo add-apt-repository ppa:n-muench/programs-ppa

sudo apt-get update

sudo apt-get install calibre

如果是卸载

sudo apt-get remove calibre

Day08-oh my zsh

oh my zsh

  • curl or wget should be installed

  • git should be installed

Basic Installation

Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either curl or wget.

  • via curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

  • via wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"1

Plugins

Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the .zshrc file. You'll find the zshrc file in your $HOME directory. Open it with your favorite text editor and you'll see a spot to list all the plugins you want to load.

For example, this line might begin to look like this:

plugins=(git bundler osx rake ruby)

Themes

Robby's theme is the default one. It's not the fanciest one. It's not the simplest one. It's just the right one (for him).

Once you find a theme that you want to use, you will need to edit the ~/.zshrc file. You'll see an environment variable (all caps) in there that looks like:

ZSH_THEME="robbyrussell"

To use a different theme, simply change the value to match the name of your desired theme. For example:

ZSH_THEME="agnoster" # (this is one of the fancy ones)
# you might need to install a special Powerline font on your console's host for this to work
# see https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster

出现乱码解决方式

执行以下命令来安装缺失的字体:
wget https://raw.githubusercontent.com/powerline/powerline/develop/font/10-powerline-symbols.conf
wget https://raw.githubusercontent.com/powerline/powerline/develop/font/PowerlineSymbols.otf
sudo mkdir /usr/share/fonts/OTF
sudo cp 10-powerline-symbols.conf /usr/share/fonts/OTF/ 
sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/
sudo mv PowerlineSymbols.otf /usr/share/fonts/OTF/

Open up a new terminal window and your prompt should look something like this:

In case you did not find a suitable theme for your needs, please have a look at the wiki for more of them.

If you're feeling feisty, you can let the computer select one randomly for you each time you open a new terminal window.

ZSH_THEME="random" # (...please let it be pie... please be some pie..)

设置默认的终端为zsh

chsh -s /bin/zsh

Day02-在Github上使用Hexo搭建个人博客

成品示例展示:https://itgoyo.github.io/

1、Hexo搭建

环境

一、环境安装

  1. node.js(在node.js官网中下载安装)node.js官网

  2. git(OS系统中直接安装x-code就可以了)

  3. hexo

1)打开OS系统终端

2)输入安装hexo的代码(此处安装时有可能会提示输入系统管理员密码)

$ sudo npm install -g hexo

如果以上命令安装失败的话,换

sudo npm install --unsafe-perm --verbose -g hexo

二、hexo创建静态博客

  1. 新建blog文件夹

  2. 在终端进入该文件夹,初始化博客

$ hexo init
3. 上述完成后,生成原始文件;blog文件夹就是博客的根目录

  1. 本地查看:启用本地服务命令(退出按ctrl+c)

$ hexo s

  1. 将出现的地址输入浏览器,即可可查看到本地效果

三、github配置

  1. 注册github账号并登陆

  2. 获取本机的SSH口令

1)输入获取代码,回车直到出现图片所示图形为止

$ ssh-keygen

2)输入编译代码

$ vim ~/.ssh/id_rsa.pub
3)出现SSH口令后,将红框部分复制,并在下方输入:q,随后按下回车可以退出该窗口

4)进入到github页面设置SSH口令

点击用户下拉菜单中的settings(step1)

点击左侧的SHH and GPG keys(step2)

在Title中输入口令名称(随意)(step3)

在key中贴上SSH口令(step4)

  1. 创建新的仓库

1)创建新的仓库(repOSitory)

点击用户左侧的+号菜单中的New repOSitory(step1)

在repOSitory name中输入二级域名,格式请严格遵照username.github.io(step2)

ps:username填写github的登录用户名,否则上线的时候会报错

是否公开选项可以选取Public(step3)

勾选step4处,会自动生成一份可编辑的README.md文件(建议勾选)(step4)

点击create repOSitory生成仓库完毕(step5)

2)查看新建的仓库(repOSitory)

可以回到github个人首页点击右侧的仓库区

进入后在step1处选择并复制http地址,注意此时step2处应该是空的

四、发布博客

  1. 设置blog配置文件

1)打开blog文件夹下的_config.yml文件

2)找到最下方的type,输入git(注意冒号后面是带空格的)

3)repo行可能没有,需要自己输入,后面跟上github上仓库中复制的http地址(注意此时1、2两处应该是一样的username),不然上传时会报错

4)其他博客设置

title:博客名称

subtitle:博客副标题

description:博客描述

author:作者

language:语言(简体中文是zh-CN)

  1. 在终端上传博客

1)进入终端,输入git上传插件安装代码(安装时会提示输入github用户名及密码)

$ npm install hexo-deployer-git --save
2)安装完毕后,输入获取代码

$ hexo g
3)最后输入上传代码

$ hexo d
4)重新在github仓库查看上传文件,此时在step2中会有之前bolg中生成的文件

5)step3处就是你的博客地址

五、新建与更新博客

  1. 新建博客

1)终端bolg文件下,输入新建博客代码

$ hexo new 'filename'

2)此时在bolg/source/_posts/下面会看到新建的博客

3)博客文件的后缀是.md文件,OS下推荐使用MOU编辑器mou下载地址

  1. 更新博客

1)完成编辑后,在终端上依次重复以下代码(此时必须先将编辑器关闭,否则会出现获取错误)

$ hexo g
$ hexo d

2)完成后便能刷新博客网页看到新更新的内容了

2、Hexo加入评论功能

Yilia主题(别的主题也是一样的操作)

首先,我们要有一个多说的账号多说(2017-6-1废弃)

然后进入到后台把我们的网站填写进去

theme/yilia/layout/_partial/post/目录下创建文件名叫:duoshuo.ejs
把以下代码复制进去

<div class="duoshuo">
    <!-- 多说评论框 start -->
    <div class="ds-thread" data-thread-key="<%=key%>" data-title="<%=title%>" data-url="<%=url%>"></div>
    <!-- 多说评论框 end -->
    <!-- 多说公共JS代码 start (个网页只需插入次) -->
    <script type="text/javascript">
    var duoshuoQuery = {short_name:'<%= config.duoshuo_shortname %>'};
    (function() {
        var ds = document.createElement('script');
        ds.type = 'text/javascript';ds.async = true;
        ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
        ds.charset = 'UTF-8';
        (document.getElementsByTagName('head')[0]
         || document.getElementsByTagName('body')[0]).appendChild(ds);
    })();
    </script>
    <!-- 多说公共JS代码 end -->
</div>

hexo/_comfig.yml里边添加一下代码(名字换成自己的)

duoshuo_shortname: xxxx(冒号后有空格)

最后在theme/yilia/_config.yml 里边添加以下代码(名字换成自己的)

duoshuo: true
short_name: xxxx  #名字换你自己在多说后台的名字(冒号后有空格)

一共配置两处地方
不然即便是看到评论功能,但是不会保留别人对你的评论

然后重新提交代码刷新即可看到评论功能


Yilia添加Disqus评论

只需要在Yilia主题里边的_config.yml添加一句

disqus_shortname: 你的Disqus账户名称

2、Hexo加入网易云音乐

Yilia主题(我使用的是这个主题就用这个来讲)

进入网易云音乐: 官网

推荐:自己注册账号,这样子可以创建自己喜欢的歌单,在里边收藏自己喜欢的歌曲

然后进入到自己的歌单

点击生成外链,获取到云音乐播放器代码

  <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=300 height=270 src="https://music.163.com/outchain/player?type=0&id=120897804&auto=1&height=430"></iframe>

选择生成自己喜欢的样式,然后复制代码

最后打开(themes/yilia/layout/_partial/left-col.ejs)
把复制好的网易云音乐放到第二行里边(当然这个是我的样式,我选择放在左边,你喜欢放在那里自己选择)

最后的效果图如下


3、Hexo加入百度统计

yilia主题为🌰


编辑文件 themes/yilia/_config.yml ,添加一行配置,可以删除原来的google analytics

baidu_tongji: true

新建 themes/yilia/layout/_partial/baidu_tongji.ejs 内容如下

<% if (theme.baidu_tongji) { %>
<script type="text/javascript">
#申请的百度统计代码
</script>
<% } %>

编辑themes/yilia/layout/_partial/head.ejs 在 前添加

<%- partial("baidu_tongji") %>

重新生产部署站点即可。
Light主题
编辑文件 themes/yilia/_config.yml ,添加一行配置,可以删除原来的google analytics

baidu_tongji: true`

新建 themes/light/layout/_partial/baidu_tongji.ejs 内容如下

<% if (theme.baidu_tongji) { %>
<script type="text/javascript">
#申请的百度统计代码
</script>
<% } %>

编辑themes/Yilia/layout/_partial/head.ejs 在 前添加

<%- partial("baidu_tongji") %>`

重新生产部署站点即可。

最后多说一句,因为文章是采用Markdown格式编辑的,所以不免会使用到图片的时候,这个时候如果是在跟目录下创建图片文件,这样子搬迁或者复制什么的会很不便,在此我想向大家推荐一个免费的图床
极简图床
只要复制图片粘贴到极简图床,它会自动生成Markdown格式的图片地址

最好申请一个七牛云,这样子就可以创建自己的私密空间。

Ubuntu下

首先安装nodejs

sudo apt-get nodejs

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

出现了相应的版本号了之后
sudo n xxx

提交到Girhub还要安装一个git插件

npm install hexo-deployer-git --save

之前一直报错,然后手贱敲错
npm install hexo-deployer-git --save、
多了一个、居然成功了?!

nmp安装失败

npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm config set proxy null
npm config set proxy=http://127.0.0.1:40242
配置相应的代理即可

LinuxMint18知识汇总

自定义快捷键启动

  • 文件夹管理器Dolphin (win+e)
  • 截图工具shutter (control+shitf+a)
  • 终端启动快捷键

窗口小部件

  • 显示当前网络流量情况 netspeed widget
  • 显示内存 系统负荷查看器

Albert

linux的类似Alfred工具,可以吧chrome的书签一起配合使用,方便了每次打开github 500

Linux神器Albert

大家都知道Mac效率神器Alfred

相应的在Linux的效率神器就是Albert

17.04执行以下代码进行软件的安装

sudo add-apt-repository ppa:noobslab/macbuntu
sudo apt-get update
sudo apt-get install albert

15.05

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install albert

设置快捷键F2

打开软件设置-键盘

新建命令albert

设置开机自启动:bash找到启动应用程序首选项,然后新增albert

如果是gonome桌面,无法快速大家bash

应用程序-附件-桌面搜索-启动应有程序

Evernote笔记排版问题用VSCode解决

Evernote笔记排版问题用VSCode解决,不仅免费而且还同步方便。

只要在VSCode里面安装一个Evermokey的插件,配置一下tokensourceUrl即可。

然后使用快捷键alt+p 来publish

破解百度云下载速度限制

↓支持一下

GitHub stars GitHub forks GitHub watchers GitHub followers

Aria2 配置实用教程(直接下载,里边有所有资源)欢迎star or fork,以便下次查找

( ´◔ ‸◔')

Aria2

aria2是基于命令行的下载工具,不过还好大神们早已开发了各种易用的UI方便我们小白们使用

最常用的webui-aria2
http://ziahamza.github.io/webui-aria2/

也可以用binux大神的YAAW
http://binux.github.io/yaaw/demo/

本人参照了binux大神的YAAW改了一个Aria2-GUI(带网易云音乐+Chrome离线跳跳龙)

http://kotlinandroid.net/Aria2-GUI

下载完了Github上的文件之后打开会有以下几个文件

  • [1] 先打开start.bat

  • [2] 再打开aria2.exe

完了之后会出现一个命令框,让它一直开着不能断,否则下载也会跟着断

如果你是用的是http://ziahamza.github.io/webui-aria2/

  • 把主机填写成localhost保存退出即可

如果你是用的是http://binux.github.io/yaaw/demo/

  • 填写如下保存退出即可

到此Aria2的部署已经差不多了,这个时候我们就要下载迅雷离线下载还有百度云Aria2导出下载了


增加chrome插件安装

安装如下:

  • 打开开发者额模式

  • 加载已解压的拓展程序,找到下载下来的拓展程序,即可(注意,目录一般就叫chrome)

BaiduExporter

迅雷离线助手


关于导入插件老是提示“建议停止开发者模式”解决方法(仅适用于.crx插件)

将非官方扩展程序加入chrome的白名单

解决方法

如果您是Mac用户

请转 ☞
Aria2GUI for Mac


Tampermonkey

https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=zh-CN

不能翻墙的小伙伴可以直接从我的Github里边的文件直接获取

百度云直接下载助手(原作者版)

由于原作者提供的代码总是出现不能正常显示直接下载的入口,本人修改此bug之后又发布了在作者原基础上修改的版本

百度网盘直接下载助手(显示直接下载入口)

进入以上直接点击安装或者install,完了直接刷新界面,进入到自己的百度云盘选择所需的下载文件即可。

这样即可获取下载连接,复制到迅雷或者IMD之类的下载器,让你享受飞一般的感觉。(本人百兆光纤,速度基本保持10m/s左右)

Proxyee-down

Proxyee-down

下载

安装

  1. Windows安装教程
  2. MAC安装教程
  3. Linux安装教程

安装成功

在安装成功之后,进入浏览器下载资源时会跳转到创建任务页面,然后选择保存的路径和分段数进行创建下载任务。
新建任务
**           200带宽下的速度 22m/s**

常见问题(必看)

在开始使用前务必看一遍常见问题列表,可以解决你使用proxyee-down下载遇到的绝大多数问题。

常用功能

手动创建任务

可以根据链接来创建一个任务,支持自定义请求头和请求体,具体请查看

刷新任务下载链接

当任务下载链接失效了,下载没速度或失败则可以使用刷新下载链接的功能,使用新的链接继续下载,具体请查看

如果觉得对您有帮助,想请我喝咖啡

Linux Mint18 安装Chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get -y install google-chrome-beta

[0807/144244.712736:FATAL:nss_util.cc(627)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required
Please upgrade to the latest NSS, and if you still get this error,
contact your distribution maintainer.
  • 解决方法

方法一:chrome 版本降低

卸载目前的chrome
    https://www.slimjet.com/chrome/google-chrome-old-version.php 下载相应的chrome旧版本安装。

方法2 : update NSS

sudo apt-get install libnss3

Linux Mint 安装网络监控器,直接使用状态栏里面添加小部件,然后安装显示到相应的位置即可。

个人比较推荐这个,因为这个比较好看:https://github.com/dfaust/plasma-applet-netspeed-widget

Mint ctrl+alt+t 快速启动终端

打开chrome 每次都弹出KDE Wallet请求的解决办法

编辑文件~/.kde/share/config/kwalletrc,追加内容:

[Auto Deny]
kdewallet=Google Chrome

Day12-Wiznote

  • 通过源码安装

https://url.wiz.cn/u/linux

安装 5.7.0 for Linux 64-bit (715 MB) 或者更高版本

http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run

下载下来的安装文件,更改权限为可执行,然后执行安装程序。不要用管理员权限安装,直接安装到home目录即可,例如~/Qt5.7.0

Git

sudo apt-get install git

编译工具

sudo apt-get install build-essential

CMake

sudo apt-get install cmake

zlib

sudo apt-get install zlib1g-dev

对于Mac/Linux,可以在终端中运行:

cd ~
mkdir WizTeam
cd WizTeam
git clone https://github.com/WizTeam/WizQTClient.git
cd WizQTClient
git checkout v2.4.4

详细图文教程参考这里

http://www.wiz.cn/compile-client.html

  • 通过已经编译好的版本安装

链接: https://pan.baidu.com/s/1eRK7twI 密码: 4uhn

由于Qt5和fcitx不兼容的问题,有可能导致在Wiznote里边无法正常的使用搜狗拼音

解决方法如下:

编译fcitx-qt需要cmake,安装cmake命令,如果已经安装,请略过。

sudo apt-get install cmake

安装 fcitx-libs-dev

sudo apt-get install fcitx-libs-dev

设置qmake的环境变量:

export PATH="/home/lieefu/Qt5.5.0/5.5/gcc_64/bin":$PATH

下载fcitx-libs源码:

git clone [email protected]:fcitx/fcitx-qt5.git

编译方法:

cd fcitx-qt5
cmake .
make
sudo make install

最后把编译得到 libfcitxplatforminputcontextplugin.so 拷贝到 Qt5.5安装目录的 Tools/QtCreator/bin/plugins/platforminputcontexts

大功告成!

CMake Error at CMakeLists.txt:8 (find_package):
  Could not find a package configuration file provided by "ECM" (requested
  version 1.4.0) with any of the following names:
    ECMConfig.cmake
    ecm-config.cmake
  Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
  to a directory containing one of the above files.  If "ECM" provides a
  separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!

遇到上述错误处里方法:
这个页面 https://launchpad.net/ubuntu/+source/extra-cmake-modules/1.4.0-0ubuntu1 下载 extra-cmake-modules_1.4.0.orig.tar.xz
解压后:

cd extra-cmake-modules-1.4.0
cmake .
make
sudo make install

CMake Error at /home/lieefu/Qt5.5.0/5.5/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):
  Failed to find "GL/gl.h" in "/usr/include/libdrm".

处里方法:

sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 
-- Could NOT find XKBCommon_XKBCommon (missing:  XKBCommon_XKBCommon_LIBRARY XKBCommon_XKBCommon_INCLUDE_DIR) 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find XKBCommon (missing: XKBCommon_LIBRARIES XKBCommon) (Required
  is at least version "0.5.0")

处里方法:

wget http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz
tar xf libxkbcommon-0.5.0.tar.xz
./configure --prefix=/usr --disable-x11
make
sudo make install

编译libxkbcommon用到yacc,如果没有这个命令,会遇到下面的错误,yacc在 bison软件包中

sudo apt-get install bison

 YACC     src/xkbcomp/parser.c
./build-aux/ylwrap: line 176: yacc: command not found
make: *** [src/xkbcomp/parser.c] Error 127

Day09-Ubuntu的安装

字体推荐思源
lantern可以设置全局代理

安装好了ubuntu之后,安装gnome主题

安装Gnome之前,升级系统:

$ sudo apt update
$ sudo apt upgrade
sudo apt-get update
sudo apt-get install gnome-session-flashback

安装完之后使用classic主题登录(此时终端不可用ctrl+alt+t)

Ubuntu 16.04/16.10安装KDE Plasma

$ sudo add-apt-repository ppa:kubuntu-ppa/backports  # Ubuntu 16.04
# 如果使用16.10,不用添加第三方源
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install kubuntu-desktop

  • lightdm:Unity桌面默认的Display Manager
  • ssdm:KDE桌面更倾向于使用ssdm(选这个)
    最后安装登录系统没反应,只有一个下划线,然后在登录时ctrl+alt+F3进入终端模式
sudo apt-get remove kubuntu-xxxx

然后登录的时候就可以使用gnome登录,此时终端可使用快捷键唤出

Ubuntu安装QQ

crossover安装与破解

在官网下载crossover安装包:

https://www.codeweavers.com/products/crossover-linux

等待安装完毕,安装完成后先不要打开crossover,下载破解文件:

https://pan.baidu.com/s/1slTLv8T

在命令行输入sudo nautilus打开一个root权限的文件管理器

把破解文件 (crossover16crack->winewrapper.exe.so) 替换路径: /opt/cxoffice/lib/wine下的winewrapper.exe.so文件。提示已有文件,点“替换”破解完成。

安装Deepin QQ 7.9 轻聊版

下载安装包:

https://pan.baidu.com/s/1gfl00ZT

下载之后用归档管理器打开

点开 data.tar.xz 找到 ./opt/cxoffice/support
把 apps.com.qq.im.light 这个文件夹提取出来

在命令行输入sudo nautilus打开一个root权限的文件管理器

然后将这个文件夹复制到系统的 /opt/cxoffice/support 下

QQ最小化叫唤不出来解决

sudo apt-add-repository ppa:fixnix/indicator-systemtray-unity
sudo apt-get update
sudo apt-get install indicator-systemtray-unity

或者是使用gnome主题

win+alt 鼠标右键状态栏 add to panel 增加消息通知事件即可

Ubuntu安装Chrome

2.在终端中,输入以下命令:

sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -

sudo apt-get update

sudo apt-get install google-chrome-stable

sudo:/etc/sudoers 可被任何人写 解决方案

解决方式

sudoers的权限被改了,改回来就好了。

pkexec chmod 0440 /etc/sudoers

git push时提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支

git remote add origin https://github.com/username/test.git    
$git fetch origin  
$git merge origin/master  

.md模板

title: "[译]Kotlin 1.1 候选版本来啦"
date: 2017-02-17 13:37:00
author: Mikhail Glukhikh
tags:
keywords:
categories: 官方动态
reward: false
reward_title: Have a nice Kotlin!
reward_wechat:
reward_alipay:
source_url: https://blog.jetbrains.com/kotlin/2017/02/kotlin-1-1-release-candidate-is-here/
translator: ahong222
translator_url: https://github.com/ahong222

tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName

.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz

.tar.bz
解压:tar jxvf FileName.tar.bz

.Z
解压:uncompress FileName.Z
压缩:compress FileName

.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

.tgz
解压:tar zxvf FileName.tgz

.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName

.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName

.rar
解压:rar a FileName.rar
压缩:rar e FileName.rar

.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

AndroidStudio配置

Edit /etc/apt/sources.list file and add one of following line :

deb http://download.virtualbox.org/virtualbox/debian trusty contrib
Save and exit

update using :sudo apt-get update

According to virtualbox_wiki you need to Install dkms

sudo apt-get install dkms
Setup oracle public key:

wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
sudo apt-key add oracle_vbox.asc
Install Oracle VirtualBox

sudo apt-get update
sudo apt-get install virtualbox-5.0

安装OBS推流软件

 sudo apt-get install ffmpeg

 sudo add-apt-repository ppa:obsproject/obs-studio
 sudo apt-get update && sudo apt-get install obs-studio

ftp上传文件

使用Filezillia

注意!!!

上传文件的时候默认是不支持中文的,要自己在站点设置里边强制使用UTF-8字符集

软件安装后相关文件位置:

 1.下载的软件存放位置
   /var/cache/apt/archives


 2.安装后软件默认位置
 /usr/share


 3.可执行文件位置 
 /usr/bin

 4.配置文件位置
  /etc

 5.lib文件位置
/usr/lib

linux怎么创建快捷方式

ubuntu 的快捷方式都在/usr/share/applications/路径下创建Android studio 的快捷方式,

命令如下:sudo gedit /usr/share/applications/Studio.desktop

[java] view plain copy
[Desktop Entry]
Name = AS
Comment= android studio
Exec=/home/king/tools/Android/android-studio/bin/studio.sh (根据自己的目录改)
Icon=/home/king/tools/Android/android-studio/bin/studio.png (根据自己的目录改)
Terminal=false
Type=Application
其中

Exec指向的是执行脚本路径

Icon是指程序的图片路径
!!!同时需要注意的是,每一行必须紧靠左侧且每行最后面不能有空格!!!

Sublite Text3怎么修改侧边栏的颜色和内容一致

sublime text3刚安装完成之后打开文件夹显示的样式如下

这样子看起来眼睛会很难受,那么我们怎样才能使得引导菜单的颜色和编辑器底色一样呢?

解决方法如下:

Ctrl+Shift+P -> install -> 搜索安装包SyncedSidebarBg,自动同步侧边栏底色为编辑窗口底色。
PS:有时改完后侧边栏颜色没变化,不知什么原因,打开包控制,然后列一下已安装包就刷新了。

安装完成之后,效果是这样子的:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.