2021年4月4日 星期日
2021年4月1日 星期四
Golang 安裝 筆記
環境:
ubuntu 20.04.2.0 LTS
go 1.16.3
vscode
安裝指令:
先到官網下載壓縮檔
sudo tar -C /usr/local -xzf go1.16.3.linux-amd64.tar.gz
vim ~/.bashrc
# golang
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
source ~/.bashrc
reboot
go env -w GO111MODULE=off
範例程式:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
2021年2月7日 星期日
CMLAB server 安裝 Anaconda 教學
cd /tmp2
mkdir khaos # 改成你自己的使用者名稱
cd khaos
# 到anaconda官網 找最新版的script下載網址
curl -O https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
>>> [ENTER][ENTER][ENTER]
>>> yes
>>> /tmp2/khaos/anaconda3
>>> yes
source ~/.bashrc
conda env list
conda env list
conda create --name py37withPyTorch python=3.7 anaconda
conda activate py37withPyTorch
conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch
python
import torch
torch.cuda.is_available()
torch.version.cuda
x = torch.rand(5, 3)
print(x)
2021年2月6日 星期六
Anaconda指令
建立虛擬環境
conda
create --name envName python=3.6 anaconda
conda
create -n 虛擬環境名稱 python=3.6
conda
create -n envName jupyter ←↑虛擬環境內預載的套件
conda config --append envs_dirs "C:\Users\Public\.conda\envs"
conda info --envs
啟動虛擬環境
activate
虛擬環境名稱
activate
envName
關閉虛擬環境
deactivate
deactivate
envName
安裝套件
conda
install 套件名稱
conda
install python=3.5 #安裝特定版本的python
pip
install tensorflow
pip
install keras
pip
install django #安裝 django web 框架套件
更新套件
conda
update 套件名稱
conda
update conda
conda
update anaconda
更新所有套件
conda
update --all
執行 python 檔案
python
hello.py
啟動 Jupyter Notebook
cd
\pythonwork
jupyter
notebook
查看內部的所有的package
conda
list
移除package:
conda
remove packeName
看有哪些虛擬環境:
conda
env list
conda
info -e
刪除虛擬環境:
conda env remove -n envName
清除安裝包的暫存檔:
conda clean --tarballs
2020年12月10日 星期四
Windows 自動喚醒 設定
[關閉所有喚醒計時器]
[查看喚醒發起的設備]
[可喚醒的裝置]
[網卡喚醒設定]
[其他可能的方案]
[參考資料]
2020年3月23日 星期一
How to Read a Paper
Lv 1: 了解作者的idea
[5~10分鐘的鳥瞰]
1. 細讀 title, abstract, and introduction
2. 稍微看一下每個 section 的前面
3. 閱讀 conclusions
4. 掃過 references,在腦子裡把你已經讀過的那些打勾
可以得知以下資訊:
1. 類型:這是什麼類型的論文? (測量實驗?對現有系統的分析?一種prototype的探討?)
2. 背景:相關論文? 理論基礎?
3. 正確性:文中的假設看起來有效嗎?
4. 貢獻:論文的主要觀點是什麼?
5. 清晰度:論文寫得好嗎?
此時可以考慮要不要繼續讀這篇論文:
1. 這篇論文可能不吸引我
2. 我的先備知識不足以理解它
3. 作者的假設是錯的
Lv 2: 取得大致上的內容
[約 1 小時]
* 整篇讀過,可以寫一些註解
* 先略過 證明、實驗
* 注意 圖 / 表 (軸的標示?Error Bar?)
* 可標註未讀過的參考資料(等等可以去念)
此時我們已能對該篇論文做出有憑有據的簡介。
有時候,完成了 Lv 2 仍然滿頭問號。可能的原因如下:
1. 該主題對自己來說是新事物(不懂的 術語、縮寫)。
2. 作者使用了自己不了解的證明或實驗技術。
3. 這篇論文可能寫得很差,沒有充分的依據和大量的前瞻性參考。
4. 深夜了、你累了、該睡了......
現在,我們可以選擇:
1. 擱置論文,祈求未來不會用到它
2. 閱讀相關參考資料後,再回來讀
3. 堅持不懈,繼續 Lv 3
Lv 3: 完全理解論文(Reviewer必備)
[初學者 - 5~6小時]
[專家 - 約 1 小時]
◎ 嘗試(重新)實作這篇論文(可能只是在腦海或紙上比劃):
與作者做出相同的假設,然後重新創建該篇論文。
透過重新創建與實際論文比較,可以發覺論文的創新之處,並找出隱藏的缺陷和假設以及潛在的問題。
◎ 深度思考:
1. 必須非常在意細節。
2. 在每個陳述中確定並挑戰每個假設。
3. 嘗試自己提出一個特定的想法,並進行比較;可以更深入地了解文中的證明和技術。
4. 思考過程中,記下將來的工作思路。
文獻調查(literature survey)
這可能需要在自己不熟悉的領域中閱讀數十篇論文。
重點:Related Work、Key Researchers、Top Conferences
Step 1:
使用學術搜索引擎(Google Scholar、CiteSeer...)找到 3~5 篇最新論文。
每篇論文做 Lv 1 的閱讀,然後閱讀其 Related Work 章節;
如此一來,可以獲得近期研究的概要。
(您可能很幸運的,找到近期調查文件的鏈結,那就讀它吧~~ 收工!!)
Step 2:
在參考資料(書目)中找到共通的citation和重複的Researchers。
這些是該領域的關鍵論文和研究人員,下載關鍵論文並先擱置。
Step 3:
訪問 Key Researchers 的網站,查看他們最近發表的論文。
(這項工作將使我們知道該領域的 Top Conferences 有哪些)
Step 4:
造訪這些 Top Conferences 的網站,並瀏覽它們最近的會議記錄。
快速掃描通常會了解到最近的高質量相關工作。
Step 5:
這些論文以及您先前保留的論文構成了調查的第一版。
將這些文件進行 Lv 1 和 Lv 2 的閱讀。
如果他們都引用了您之前沒有找到的關鍵論文,請獲取並閱讀,必要時進行迭代。
相關工作:
做Review
※ T. Roscoe, “Writing Reviews for Systems Conferences,”
https://people.inf.ethz.ch/troscoe/pubs/review-writing.pdf
寫 Paper
※ H. Schulzrinne, “Writing Technical Articles,”
https://www.cs.columbia.edu/~hgs/etc/writing-style.html
※ G.M. Whitesides, “Whitesides’ Group: Writing a Paper,”
https://www.tulane.edu/~lamp/whiteside.pdf
參考資料:
S. Keshav, “How to Read a Paper,” at ACM SIGCOMM Computer Communication Review, 2007.
2020年2月22日 星期六
Ubuntu 快速管理防火牆 (使用 ufw 指令)
$ sudo ufw enable
# 停用防火牆
$ sudo ufw disable
# 允取所有連入
$ sudo ufw default allow
# 不允許任何的連入
$ sudo ufw default deny
# 新增防火牆規則
$ sudo ufw allow ssh ( 允許服務連入 )
$ sudo ufw allow in 80 ( 允許Port連入 )
$ sudo ufw deny out 60000 ( 拒絕Port連出 )
$ sudo ufw deny in 60000/udp ( 拒絕Port之UDP連入 )
# 刪除防火牆規則
#先查詢
$ sudo ufw status numbered
#再刪除
$ sudo ufw delete <規則號碼>
# 查看狀態
$ sudo ufw status
$ sudo ufw status verbose
啟用 Docker Remote API 遠端呼叫
想要透過遠端請求的話,就必須設定監聽的 port
step 1
創建 /etc/systemd/system/docker-tcp.socket 檔案,內容如下:
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=8888
Service=docker.service
[Install]
WantedBy=sockets.target
step 2
systemctl stop docker
systemctl enable docker-tcp.socket
systemctl enable docker.socket
systemctl start docker-tcp.socket
systemctl start docker
step 3
測試與驗證:
curl -X GET http://localhost:8888/info
參考資料:
Docker开启Remote API 访问 2375端口
2019年12月5日 星期四
Windows 解除非預期的喚醒
1. 關閉 網路喚醒
2. 關閉 USB喚醒
3. 設定電源選項
4. 關閉 排程 的 喚醒
確認有哪些排程喚醒
使用PSTools,可以在微軟網站上下載。
https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
指令
psexec -i -s -d mmc.exe /s taskschd.msc
參考資料:
https://zhuanlan.zhihu.com/p/67930133
※ 註:
powercfg -lastwake 可以查看最近喚醒電腦的原因2019年12月1日 星期日
Visual C++/CLR 之 Json.NET 範例
安裝教學
https://youtu.be/WujKlfNyL8I
序列化
#include <string>
using namespace std;
using namespace System;
using namespace Newtonsoft::Json;
public ref class Account : Object
{
public:
bool Active;
String^ Email;
};
int main()
{
Account^ account = gcnew Account();
account->Email = "kaihao@example.com";
account->Active = true;
String^ json = JsonConvert::SerializeObject(account, Formatting::Indented);
Console::WriteLine(json);
Console::ReadKey();
return 0;
}
反序列化
#include <string>
using namespace std;
using namespace System;
using namespace System::IO;
using namespace System::Collections::Generic;
using namespace Newtonsoft::Json;
public ref class PeopleData : Object
{
public:
String^ Part;
List<List<float>^>^ Points;
};
int main()
{
String^ jsonFile = File::ReadAllText(R"(C:\Users\KaiHao\Desktop\1GM318J6\size.txt)");
List<PeopleData^>^ peopleDatas = JsonConvert::DeserializeObject<List<PeopleData^>^>(jsonFile, (JsonSerializerSettings ^)nullptr);
Console::ReadKey();
return 0;
}
2019年11月19日 星期二
linux 新增使用者 bash script
#!/bin/bash
for i in {1..100};
do
num=$( printf '%03d' $i )
echo -e '1234\n1234\nstu$num\n\n\n\n\ny\n' | adduser "stu$num"
done
2019年11月12日 星期二
visual studio 2017 建置 openpose 專案 (GPU版)
版本:
OpenPose v1.5.1visual studio 2017
Python 3.7.4
CMake 3.15.4
cuda 10.0
cudnn 7.5
step1 下載專案
https://github.com/CMU-Perceptual-Computing-Lab/openpose
step2 下載並安裝CMake
step3 下載並安裝CUDA與CUDNN
複製到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0下
覆蓋原有的bin、include、lib
step4 執行相關批次檔
不用以系統管理員身分執行全選 按 Enter 即輕鬆搞定~~C:\openpose\3rdparty\windowsgetCaffe.batgetCaffe3rdparty.batgetFreeglut.batgetOpenCV.batC:\openpose\modelsgetModels.bat
step5 開啟CMake 產生 vs2017專案
step6 開啟、編譯與執行
step7 執行python範例
2019年11月9日 星期六
VC++啟用CLR支援
然後
//#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
//#using <System.Drawing.Common.dll>
using namespace std;
using namespace System;
using namespace System::Collections;
//using namespace System::Windows::Forms;
//using namespace System::ComponentModel;
//using namespace System::Data;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;