2020年12月10日 星期四

Windows 自動喚醒 設定

[關閉所有喚醒計時器]

step 1. 列出所有喚醒計時器
# powercfg /waketimers

step 2. 下載 PsTools 

step 3.
# psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc

step 4.
{找到該工作} > 雙擊 > 條件{頁籤} > {取消勾選}喚醒電腦已執行工作 > 確定


[查看喚醒發起的設備]

{開啟}事件檢視器 > {左邊欄}Windows 紀錄 > 系統 >
                   > {右邊欄}尋找 > "Power-Troubleshooter"


[可喚醒的裝置]

查詢指令
# powercfg /?

查詢所有可喚醒的裝置
# powercfg /devicequery wake_programmable

查詢目前作用中的可喚醒裝置
# powercfg /devicequery wake_armed

關閉可喚醒裝置
# powercfg /devicedisablewake "設備名"

開啟可喚醒裝置
# powercfg /deviceenablewake "設備名"


[網卡喚醒設定]

→ 只允許 Magic 封包喚醒電腦


[其他可能的方案]

在bios里設置usb關機斷電

在bios里設置禁止usb喚醒


[參考資料]

https://www.getit01.com/p20180108548154015/







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 Researcher的網站,查看他們最近發表的論文。
(這項工作將使我們知道該領域的 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 3306  (  )
    $ 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 遠端呼叫

Docker Remote API 是以 Unix Socket 作連接
想要透過遠端請求的話,就必須設定監聽的 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




參考資料:


在運行systemd的Linux上啟用對Docker API的遠程訪問

Docker开启Remote API 访问 2375端口




2019年12月5日 星期四

Windows 解除非預期的喚醒

1. 關閉 網路喚醒


2. 關閉 USB喚醒


3. 設定電源選項


將電源計劃設為預設值

停用喚醒計時器
禁用喚醒定時器

參考資料:


4. 關閉 排程 的 喚醒


指令powercfg /waketimers

確認有哪些排程喚醒

使用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 範例

安裝教學


Visual C++/CLR 使用 NuGet 套件 - 以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.1
visual 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

注意版本!!


CUDA就是一般程式的安裝方式 (下一步 下一步 ... 確定 ... 完成)


CUDNN解壓縮後,將bin、include、lib三個資料夾
複製到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專案







等等等.............




沒裝過 git ,要裝一下

然後

cd "C:\openpose\3rdparty"
git clone https://github.com/pybind/pybind11.git




step6 開啟、編譯與執行







綠色箭頭就可以執行了


其他執行指令(點我)


若沒有webcam
則到 OpenPoseDemo的專案 屬性中
組態屬性 > 偵錯 > 命令引數
輸入 --image_dir examples\media\


step7 執行python範例

 注意:不保證成功 注意路徑問題 與python版本問題


python -m pip install --upgrade pip
pip install opencv-python
conda create --name py374 python=3.7.4 anaconda
y
activate py374
conda install -c conda-forge opencv
y

cd "C:\openpose\build_GPU\examples\tutorial_api_python"
python 01_body_from_image.py


2019年11月9日 星期六

VC++啟用CLR支援

屬性頁  >  組態屬性  >  一般  >  Common Language Runtime 支援 (/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;

2019年10月18日 星期五

visual studio 2017 建置 openpose 專案 (CPU版)

版本:

OpenPose v1.5.1
visual studio 2017
CMake 3.15.4
Python 3.7.4


step1 下載專案


https://github.com/CMU-Perceptual-Computing-Lab/openpose



step2 下載並安裝CMake





step3 執行相關批次檔

C:\openpose\3rdparty\windowsgetCaffe.batgetCaffe3rdparty.batgetFreeglut.batgetOpenCV.batC:\openpose\modelsgetModels.bat

step4 開啟CMake 產生 vs2017專案




由於沒有裝CUDA,所以會跑出一些ERROR,先別理他。



沒裝過 git ,要裝一下

然後

cd "C:\openpose\3rdparty"
git clone https://github.com/pybind/pybind11.git




step5 開啟、編譯與執行







綠色箭頭就可以執行了



其他執行指令(點我)


step 6 執行python範例

 注意:不保證成功 注意路徑問題python版本問題


python -m pip install --upgrade pip
pip install opencv-python
conda create --name py374 python=3.7.4 anaconda
y
activate py374
conda install -c conda-forge opencv
y

cd "C:\openpose\build_CPU\examples\tutorial_api_python"
python 01_body_from_image.py



2019年10月12日 星期六

VS2017設置GLUT

Step 1.

到 OpenGL 官網下載 GLUT:
https://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

Step 2.

glut.h 放到
C:\Program Files (x86)\Microsoft Visual Studio\2017
        \Community\VC\Tools\MSVC\14.15.26726\include


glut.lib, glut32.lib 放到
C:\Program Files (x86)\Microsoft Visual Studio\2017
        \Community\VC\Tools\MSVC\14.15.26726\lib\x64


glut.dll, glut32.dll 放到
C:\Windows\System32

Step 3.

安裝Nuget套件:
nupengl

Step 4.

範例程式:

#include <GL/glut.h>
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}

int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutInitWindowSize(300, 300);
glutCreateWindow("Hello OpenGL");
glutDisplayFunc(&display);
glutMainLoop();
return 0;
}

2019年8月21日 星期三

CSS 長度單位

px

縮放螢幕的時候,這個不會隨著變動。
相對長度單位。相對於顯示器屏幕分辨率而言的。

%

相對於包含它的最近的父元素的高度和寬度

vh、vw  (view height、view width)

螢幕可視範圍長寬的百分比。


vmin 

抓取「長或寬較小的那個的百分比」

vmax 

抓取「長或寬較大的那個的百分比」

em

相對長度單位。相對於當前對象內文本的字體尺寸。

rem

相對長度單位。相對於根元素<html>文本的字體大小。

2019年8月5日 星期一

Google 的 Android emulators 支援 Hyper-V !?

Google 官方的開發者部落格提到,Google 的 Android emulators 支援 Hyper-V 了。

詳情可以參考:
Android Emulator - AMD Processor & Hyper-V Support


實用的摘要如下:

1.基本需求

  • Windows 10 作業系統必須為1803以上的版本
  • Android Studio 和 Android Emulator 都安裝最新版本


2.Windows功能設定


3.成功範例截圖