2019年9月30日 星期一

Linux shell顯示git branch

在shell上直接顯示git branch是很方便的資訊
以下是在不同的shell上的設定
.bashrc
 parse_git_branch() {  
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'  
 }  
 export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "  

.zshrc
 setopt prompt_subst  
 autoload -Uz vcs_info  
 zstyle ':vcs_info:*' stagedstr 'M'   
 zstyle ':vcs_info:*' unstagedstr 'M'   
 zstyle ':vcs_info:*' check-for-changes true  
 zstyle ':vcs_info:*' actionformats '%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '  
 zstyle ':vcs_info:*' formats \  
  '%F{5}[%F{2}%b%F{5}] %F{2}%c%F{3}%u%f'<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>parse_git_branch() {  
    git branch 2&gt; /dev/null &#124; sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'  
 }  
 export PS1=&quot;\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ &quot;  
 </code></pre>  
 zstyle ':vcs_info:git*+set-message:*' hooks git-untracked  
 zstyle ':vcs_info:*' enable git   
 +vi-git-untracked() {  
  if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \  
  [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then  
  hook_com[unstaged]+='%F{1}%f'  
 fi  
 }  
 precmd () { vcs_info }  
 PROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '  

2019年9月27日 星期五

Linux 開發環境設定紀錄

開始在適應使用Linux mint作為開發系統
使用上除了桌面與觸控板手勢的操作沒有mac好用外
基本上都還算上手
建置web開發環境 與執行原本的專案
發現了專案內有一些require大小寫有誤的地方
在linux下都會跳出錯誤訊息確認修正
環境的設定上 部份的小問題處理
在這作個紀錄

開發的系統移到mint上

1.ruby compass 使用安裝問題
You need to have Ruby and Compass installed and in your system PATH
問題處理
 sudo apt-get install gcc ruby-dev rubygems  
 sudo gem install compass  

2.系統問題
Error: ENOSPC: System limit for number of file watchers reached
設定可watch數量
 vi /etc/sysctl.conf  
 fs.inotify.max_user_watches=524288  

3.shell切換使用
 執行 /bin/bash | zsh  
 設定 vi ~/.bashrc 或 .zshrc  
 應用 source ~/.bashrc  
 設定預設 chsh -s /bin/zsh  

4. Android Studio 問題
使用AVD 發生
/dev/kvm permission denied.錯誤
ubuntu18後需要
 1.sudo apt install qemu-kvm.  
 2.sudo adduser $USER kvm //將自己帳號加入到kvm群組內  
 3.重新啟動電腦 就可以用了  

5.升級node 10 gulp錯誤
錯誤 gulp[5761]: ../src/node_contextify.cc:635:static void node::contextify
執行 npm i natives 修正

6.JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

2019年9月22日 星期日

在Linux上build Kitematic

最近開始將工作環境從mac搬到Linux上
之前在mac上使用docker會使用kitematic這個很方便的管理界面
到github官方站台上只有winodw與mac的release版本可以下載
Linux則是只有source code需要自己build 執行程式

下載source code 解開發現原來kitematic是一個electron應用程式
直接執行Makefile是有問題的,原因是makefile內引用的npm script有錯
只能選擇自己依照標準electron專案的步驟來build
所有需要的script都已經放在package.json內
只要依照順序執行即可
 npm install // 安裝專案需要的node module  
 npm install electron-packager // 因為需要打包成執行檔 需要安裝electron打包程式  
 npm run release:debian:x64 // 依照自己的作業系統 在package.json內找到適合的script執行  
打包好的程式就會產生在dist目錄下

注意 如果build好的kitematic 執行有錯誤

we can't find a native setup

只要改用sudo kitematic執行即可

2019年9月13日 星期五

中秋

騎著摩托車 載著妹妹 我們要去果園過中秋
沿著88快速道路下的車道 往潮洲騎去
妹妹 還是一路上 唱著歌

平常山上 大概都是老爸一個人在這
今年老媽提早一天來 要包粽子
小弟 也回來了
跟著大弟的車到山上
妹妹已經是 小孩裡的大姊姊
平常安靜的山上 除了收音機的歌聲
廚房做菜的聲音 小孩的吵鬧聲
還有我們兄弟 跟老爸聊天的聲響
4點多開始烤蕃薯 烤玉米
一直到8點多 放完煙火鞭炮
中秋 全家人可以團聚的快樂時光






2019年9月10日 星期二

sequelize 建立沒有primaryKey的 table model

當建立的 table model ,table並沒有任何欄位有設定primaryKey
model會預設建立一個id的欄位當作primary key
可能在做查詢時會因為這樣不存在的id而出錯
若建立的model 無pk存在 加入一段檢查
移除id attribute 即可

let havePK = false
fields.forEach(field => {
  if (field.primaryKey) havePK = true
})
const model = sequelize.define('tableName', fields, option)
if (!havePK) model.removeAttribute('id')