2023年11月5日 星期日

[Win10] 開啟休眠選項

開啟消失的休眠選項

1. 命令提示字元(系統管理員)
2. C:\WINDOWS\system32>powercfg /H on

2023年9月1日 星期五

[C][string] strtok/strtok_r 字串切割

字串切割 
string tokenization

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    const char * const str = "MAC-:AA-BB-CC-DD-EE-FF";
    const char * const delimitation = "-:";
    char * const dupstr = strdup(str);
    char *saveptr = NULL, *substr = NULL;
    int i = 0;

    printf("original: %s (%p)\n", dupstr, dupstr);
    
    substr = strtok_r(dupstr, delimitation, &saveptr);

    do {
        printf("#%d after parsing: %s (%p)\n", i++, substr, substr);
        substr = strtok_r(NULL, delimitation, &saveptr);
    } while (substr);
    
}

/*
[Result]
original: MAC-:AA-BB-CC-DD-EE-FF (0x55f73e1e42a0)
#0 after parsing: MAC (0x55f73e1e42a0)
#1 after parsing: AA (0x55f73e1e42a5)
#2 after parsing: BB (0x55f73e1e42a8)
#3 after parsing: CC (0x55f73e1e42ab)
#4 after parsing: DD (0x55f73e1e42ae)
#5 after parsing: EE (0x55f73e1e42b1)
#6 after parsing: FF (0x55f73e1e42b4)
*/


[C][string] strstr/strchr用法

在字串中找特定字

eq,
在”ABCDEF”中找”CD” → 用strstr,不能用strchr,記憶體會壞掉
在”ABCDEF”中找’C’ → 用strchr,也可以用strstr

[C][string] sscanf用法

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
   int day, year;
   char weekday[20], month[20], tmp[100];

   strcpy(tmp, "Saturday March aaa 25 1999");
   
   /*"%*s" means ignore aaa*/
   sscanf(tmp, "%s %s %*s %d %d", weekday, month, &day, &year);

   printf("%s %d %d %s", month, day, year, weekday);
    
   return(0);
}

/*
[Result]
March 25 1999 Saturday
*/
%*s 表示可以忽略字串的中aaa


2023年5月23日 星期二

[OpenWRT] 開啟curl中的SCP和sftp功能

官網中提到要開啟此功能需要載入libssh2, libssh
https://everything.curl.dev/usingcurl/scpsftp


1. config
CONFIG_PACKAGE_libssh=y
CONFIG_PACKAGE_libssh2=y

2. make menuconfig
Libraries → libcurl → SCP / SFTP protocol


3.
這樣make時才會帶入在makefile中的--with-libssh2=/usr/local


2023年3月26日 星期日

[Win10] 更新後藍牙不能用(消失)

檢查裝置管理後發現藍芽消失了,且藍芽滑鼠失效

正常情況應為下圖所示,


此時反倒出現了一個為未知裝置


按右鍵,把他移除,重新機後,藍芽就恢復正常


2023年3月18日 星期六

[C][string] printf/printk文字上色

上色
30(黑色)、31(红色)、32(綠色)、 33(黄色)、34(藍色)、35(桃红)、36(青色)、37(白色)

printf("\033[1;31m%s = %s\033[0m\n", key, value);
printk("\033[1;31m%s = %d\033[0m\n", key, value);
僅linux可用

[C][string] fprintf/sprintf用法

●fprintf: 輸入格式化的文字到文件中

file printf
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *fPtr;
    int age = 20;
    
    fPtr = fopen("test.txt", "w");
    if (!fPtr) {
        printf("open file fail\n");
        return 0;
    }
    
    fprintf(fPtr, "I am %d years old.\n", age );
   
    fclose(fPtr);
    
    return 0;
}

test.txt →  I am 20 years old.


2023年3月7日 星期二

[Linux] ar vs. gcc-ar

gcc-ar的意思是多包了--plugin=/path/to/liblto_plugin.so
所以 gcc-ar = ar --plugin=/path/to/liblto_plugin.so


2023年2月22日 星期三

[Linux] iptables無法過濾URL問題

假設今天用iptable drop www.google.com

iptable command: 
iptables -I FOEWARD -m string --string “google.com" --algo bm -j DROP

但卻無法擋住(drop)www.google.com ...

此問題要從DNS Query看起,DNS Query有兩種方式:
  1. HTTP2.0: DNS Query → TCP handshake → TLS handshake
  2. HTTP3.0: DNS Query → QUIC handshake

[網路] 5G LTE 名詞解釋

PLMN(Public Land Mobile Network) = MCC + MNC
中華電信MCC: 466, MNC: 92

ECGI(E-UTRAN Cell Global Identifier) = PLMN + Cell Identity(ECI)

ECI(Cell Identity) = EnodeB ID (20 bit) + Cell ID (8 bit)

[網路] 用Wireshark看懂網路五層教學

教你如何快速看懂 TCP/IP五層 網路封包
https://dotblogs.com.tw/Leo_CodeSpace/2019/03/29/203853