自訂與內建函式
#include "/usr/include/stdio.h"
int max(int a, int b) {
int c;
if (a>b) c=a;
else c=b;
return c;
}
main(void)
{
int x=20,y=30;
int d=max(x,y);
printf("The max number is: %d\n",d);
}
php
#!/usr/bin/php
<?php
function max_num($a,$b) {
if ($a>$b) {
$c=$a;
}
else {
$c=$b;
}
return $c;
}
echo max_num(3,2)."\n";
?>
shell script
#!/bin/bash
max_num() {
if [ $1 -gt $2 ]
then
c=$1
else
c=$2
fi
return $(($c))
}
max_num 10 20
echo $c
2017年12月18日 星期一
2017年12月17日 星期日
請問MP3跟AAC哪種音質比較好呢?
1. aac 原先設計就是要取代 mp3 的, '理論上'較好
2. aac 的支援沒有 mp3 好是舊聞, 現今大多設備都能支援撥放
3. 90年代做的盲目測試(遮住眼睛聽), 的確 aac 的音質與透明度都較 mp3 好.
現今則要看編碼器. 事實之一是 aac 似乎不像 mp3 已有高階編碼器可處理.
你轉 mp3 檔的時候, 取樣頻率調高一點, 有可能產出不輸或勝過 aac
4. aac 有個好處 mp3 比不上: title 不易產生亂碼. 這是因為 mp3 的命名方式比較雜
5. aac 不會比較小,參考數值: 同是128k 時, aac 可能跟 mp3 一樣大. 192k /256k 時,
aac 會比 mp3 大約 8% (以上數據視編碼器而定)
2. aac 的支援沒有 mp3 好是舊聞, 現今大多設備都能支援撥放
3. 90年代做的盲目測試(遮住眼睛聽), 的確 aac 的音質與透明度都較 mp3 好.
現今則要看編碼器. 事實之一是 aac 似乎不像 mp3 已有高階編碼器可處理.
你轉 mp3 檔的時候, 取樣頻率調高一點, 有可能產出不輸或勝過 aac
4. aac 有個好處 mp3 比不上: title 不易產生亂碼. 這是因為 mp3 的命名方式比較雜
5. aac 不會比較小,參考數值: 同是128k 時, aac 可能跟 mp3 一樣大. 192k /256k 時,
aac 會比 mp3 大約 8% (以上數據視編碼器而定)
change default shell in Mac OS
- Go to System Preferences
- Click on "Users & Groups"
- Click the lock to make changes.
- Right click the current user -> Advanced options
- Change the login shell to /bin/zsh in the dropdown.
- Open a new terminal and verify with
echo $SHELL
How to cut files on Finder on Mac OSX ?
Press CmdC to mark a file for copying or moving, change directory,
then press CmdOptV to move the previously marked file.
then press CmdOptV to move the previously marked file.
2017年11月30日 星期四
Windows 10 按鍵組合
Windows 按鍵組合
Windows 鍵或者 Ctrl + Esc:彈出開始功能表。
Windows 鍵+E:開啟檔案總管。
Windows 鍵+Tab:工具列視窗切換。
Alt+Tab : 應用程式切換。
Windows 鍵+D:隱藏、顯示視窗。
Windows 鍵+F1:開啟 Windows 的 [說明與支援]。
Windows 鍵+M:所有視窗縮到最小。
Windows 鍵+M+Shift:取消所有視窗縮到最小。
Windows 鍵+Pause/Break:開啟 [系統內容]。
Windows 鍵或者 Ctrl + Esc:彈出開始功能表。
Windows 鍵+E:開啟檔案總管。
Windows 鍵 + X : 開啟「進階設定」功能表。
Windows 鍵+R:執行(R)...。
Windows 鍵+F:開啟 [搜尋檔案和資料夾]。(windows 8)
Windows 鍵 + S : 開啟 [搜尋檔案和資料夾]。(Windows 10)
Windows 鍵 + I : 開啟「設定」視窗,以變更 Windows 中的功能行為。
Windows 鍵 + K : 開啟「連接」或「裝置」檢視畫面,以連接藍牙裝置。
Windows 鍵+Tab:工具列視窗切換。
Alt+Tab : 應用程式切換。
Windows 鍵+D:隱藏、顯示視窗。
Windows 鍵 + 左箭頭 或右箭頭
移動並調整目前的視窗至畫面左半邊或右半邊。
Windows 鍵 + Prt Scr (Print Screen)
將畫面的圖片以 PNG 圖形檔儲存至圖片媒體櫃的螢幕擷取畫面資料夾中。
Windows 鍵+M:所有視窗縮到最小。
Windows 鍵+M+Shift:取消所有視窗縮到最小。
Windows 鍵+Pause/Break:開啟 [系統內容]。
Linux player
MPlayer
MPlayer is a free and open media player software. The program is available for all major .... Qt-based are SMPlayer and KMPlayer
sudo zypper install vlc vlc-codecs
sudo zypper install handbrake-cli handbrake-gtk
sudo zypper install k3b-codecs ffmpeg lame phonon-backend-vlc phonon4qt5-backend-vlc vlc-codecs libdvdcss2 flash-player
zypper dup
sudo zypper dup --from 'Packman Repository'
MPlayer is a free and open media player software. The program is available for all major .... Qt-based are SMPlayer and KMPlayer
smplayer
SMPlayer是一个非常好用的媒体播放器,可以支持大部分的视频和音频文件。它支持音频轨道切换,允许调节亮度、对比度、色调、饱和度、伽玛值,按照倍速、4倍速等多种速度回放,还可以进行音频和字幕延迟调整以同步音频和字幕。open-source codecs
https://en.wikipedia.org/wiki/Comparison_of_audio_coding_formatspackman
zypper ar -f -n packman http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_42.1/ packmansudo zypper install vlc vlc-codecs
sudo zypper install handbrake-cli handbrake-gtk
sudo zypper install k3b-codecs ffmpeg lame phonon-backend-vlc phonon4qt5-backend-vlc vlc-codecs libdvdcss2 flash-player
zypper dup
sudo zypper dup --from 'Packman Repository'
2017年11月29日 星期三
字元變數(variable)
建立變數
int i;int j;
i=1;
j=2;
short way
int i=1, j=2;
字'元'變數
一個英文字母、數字或其他的符號,我們稱它為字元(character),總共256種。可以用ASCII字元碼來對應到每個字元。要表示一個字元,我們可以用一對單引號 ' 把該字元夾起來,例如:char test='c';
事實上,字元在電腦中是以一個八位元的整數來儲存(即 1 Byte)也就是說,其實字元對電腦來說也是一個數字,因為最後還是01的變化。
ASCII
二進位 十進位 圖形0000 0010 3
0011 0011 51 3
main(void)
{
int e=3;
printf("整數變數的值是(顯示圖形) : %c\n",e);
char f='3';
printf("字元變數的值是(顯示十進位) : %d\n",f);
}
第一個答案是空的,因為以%c顯示字元圖形是空的
整數變數的值是(顯示圖形) :
第二個答案是51,因為以%d顯示十進位的值
字元變數的值是(顯示十進位) :51
結論:
字元在電腦中是以一個八位元的整數來儲存(例如ASCII所示)
因此也可以拿來做加減乘除等四則運算。例如
ASCII
二進位 十進位 圖形0011 0001 49 1
0011 0100 52 4
#include <stdio.h>
main(void)
{ char c='1';
c=c+3;
printf("The answer is : %c\n",c);
char d='1';
d=d+3;
printf("The answer is : %d\n",d);
}
The answer is : 4
The answer is : 52
控制字元
控制字元通常以跳脫字元 \ 開頭,簡單來說用'\n'控制換行就好像鍵盤按下Enter。'\0' 空字元,用於字串的結束
'\n' New Line,換行符號
'\r' Carriage Return,回歸鍵(即 Enter 鍵)
'\t' Tab,跳格
'\b' Backspace,倒退鍵
'\a' Bell,嗶一聲
'\\' 反斜線 \
'\'' 單引號 '
'\"' 雙引號 "
2017年9月8日 星期五
建立修改MySQL資料表
命令列建立資料庫表格需要三項要素:
一 表格的名字
二 欄位名稱
三 欄位的類型
語法:
CREATE TABLE 表格的名字 (欄位名稱 欄位的類型);
以下是一個建立表格的範例:
Create Table ExTable (
ExId INT NOT NULL AUTO_INCREMENT,
ExName CHAR(20) NOT NULL,
ExTitle VARCHAR(100) ,
ExDate DATE,
PRIMARY KEY (ExId)
);
Create Table ExTable (
ExId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
ExName CHAR(20) NOT NULL,
ExTitle VARCHAR(100) ,
ExDate DATE,
);
ALTER TABLE 表格的名字 CHANGE COLUMN 原來欄位名稱 新欄位的名稱 新欄位的類型;
以下是一個修改表格的範例:
Alter table ExTable Change column ExName NewName char(20) not null;
ALTER TABLE 表格的名字 ADD COLUMN 欄位名稱 欄位的類型;
以下是一個新增表格的範例:
Alter table ExTable ADD column ExAddress varchar(100) not null;
ALTER TABLE 表格的名字 DROP COLUMN 欄位名稱 ;
以下是一個刪除表格欄位的範例:
Alter table ExTable DROP column ExAddress;
alter table ExTable modify column ExId int, drop primary key;
alter table ExTable modify column ExId int primary key;
alter table ExTable modify column ExId int auto_increment;
alter table ExTable add primary key(ExId);
所謂NULL值並不是表示數字的零或是字串中的空字串,而是代表未知值或是未適合值。NULL大多在欄位輸入時,尚未獲知正確值的情況下使用。
例如,建立通訊錄表格時,並不知道某人的傳真號碼或沒有傳真號碼,用NULL表示。
如果欄位屬性為NOT NULL(不可以未知)時,使用者在建立一筆資料時,若欄位為空白MySQL會顯示錯誤。
一 表格的名字
二 欄位名稱
三 欄位的類型
語法:
CREATE TABLE 表格的名字 (欄位名稱 欄位的類型);
以下是一個建立表格的範例:
Create Table ExTable (
ExId INT NOT NULL AUTO_INCREMENT,
ExName CHAR(20) NOT NULL,
ExTitle VARCHAR(100) ,
ExDate DATE,
PRIMARY KEY (ExId)
);
Create Table ExTable (
ExId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
ExName CHAR(20) NOT NULL,
ExTitle VARCHAR(100) ,
ExDate DATE,
);
ALTER TABLE 表格的名字 CHANGE COLUMN 原來欄位名稱 新欄位的名稱 新欄位的類型;
以下是一個修改表格的範例:
Alter table ExTable Change column ExName NewName char(20) not null;
ALTER TABLE 表格的名字 ADD COLUMN 欄位名稱 欄位的類型;
以下是一個新增表格的範例:
Alter table ExTable ADD column ExAddress varchar(100) not null;
ALTER TABLE 表格的名字 DROP COLUMN 欄位名稱 ;
以下是一個刪除表格欄位的範例:
Alter table ExTable DROP column ExAddress;
alter table ExTable modify column ExId int, drop primary key;
alter table ExTable modify column ExId int primary key;
alter table ExTable modify column ExId int auto_increment;
alter table ExTable add primary key(ExId);
所謂NULL值並不是表示數字的零或是字串中的空字串,而是代表未知值或是未適合值。NULL大多在欄位輸入時,尚未獲知正確值的情況下使用。
例如,建立通訊錄表格時,並不知道某人的傳真號碼或沒有傳真號碼,用NULL表示。
如果欄位屬性為NOT NULL(不可以未知)時,使用者在建立一筆資料時,若欄位為空白MySQL會顯示錯誤。
2017年3月25日 星期六
google-drive-ocamlfuse(install google-drive on linux)
Introduction:
GUI way:Insync.
command line: google-drive-ocamlfuse
Installation:
1. download from "https://software.opensuse.org/find"2. install
authorize:
google-drive-ocamlfuse.
This command will open a browser window that will prompt you to log into your Google account
Mounting your Google Drive:
google-drive-ocamlfuse /mnt/point
umount:
fusermount -u /mnt/point
umount:
fusermount -u /mnt/point
NFS與CIFS
NFS:(Network File System)
NFS實際上是網絡檔案系統的縮寫。該網絡檔案系統實際上用於Linux或Unix-Based的作業系統。
用戶可以通過使用一台Unix-Based作業系統平台來查看,甚至更改/編輯一個另一台Unix-Based作業系統平台中的一些檔案。 FTP只能下載後編輯。
mount:
# mount serverIP:/server/dir /mnt/point
權限:
由server side設定用戶端的權限
mount on startup
serverIP:/dir /mnt/point nfs defaults,_netdev 0 0
mount on startup
serverIP:/dir /mnt/point nfs defaults,_netdev 0 0
CIFS:(Common Internet File System)
是基於Windows的檔案共享對象。
mount:
# mount.cifs -o username=user //server/dir /mnt/point
umount:
# umount -l /mnt/point
umount:
# umount -l /mnt/point
2017年1月23日 星期一
網路類別
廣域網路(WAN)
廣域網路的架構是用於兩個距離超過二十公里以上之區域網路要做連線所需方式。
都會網路(MAN)
大都會網域架構為二十公里以內,四公里以上範圍內網路系統。
區域網路(LAN)
區域網路架構為四公里以內範圍,是網路最基本的連線組織方式。
無線區域網路(WLAN)
廣域網路的架構是用於兩個距離超過二十公里以上之區域網路要做連線所需方式。
都會網路(MAN)
大都會網域架構為二十公里以內,四公里以上範圍內網路系統。
區域網路(LAN)
區域網路架構為四公里以內範圍,是網路最基本的連線組織方式。
無線區域網路(WLAN)
什麼是嵌入式系統?
所謂嵌入式系統簡單的說就是將系統程式整合在晶片(Chip)內,使其可以獨立執行某種特定功能的一個系統,通常具有高穩定性、操作容易或不需管理等特性,一般常應用在通訊、醫療、製造業與消費性電子方面,例如電子字典、PDA和自動提款機皆是,但是近年來因為微電腦科技與Internet盛行之故,也激發了嵌入式系統在網路方面的應用,從最近許多資訊家電(Information Appliance)產品的問世即可見一斑,而IA產品其實與嵌入式技術有著密不可分的關係,目前大部份IA產品的研發都集中在Internet與影音方面的應用‧
訂閱:
文章 (Atom)