顯示具有 replace 標籤的文章。 顯示所有文章
顯示具有 replace 標籤的文章。 顯示所有文章

2019年9月18日 星期三

[macOS] 處理 LSEP 特殊符號

最近在製作產品 landing page 時,同事發現對岸同事給的資料裡,複製出來貼到網頁上還是會看到特殊符號 L SEP 的字符。這是因為大家的文字編輯不同,再加上整理資料時都採用複製貼上,因此把這換行符號 unicode U+2028 字符貼到網頁或對應的語言檔(或是 HTML 寫 &#8232 )

解法:看看編輯器是否能取代了

VIM 解法:搜尋時,輸入 \%u2028 就能找到,接著再靠 :%s/\%u2028//g 就取代完畢了

2019年1月25日 星期五

Google Analytics 使用筆記 - URI GROUPING

GA - 資料檢視 - 篩選器 - 搜尋與取代

這半年除了狂用 GA API 自製 Dashboard 外,偶爾也要強迫自已直接用 GA Web console 做事。在研究資料過濾/整頓時,發現 GA 的 資料檢視 已經做得很完美了,有個非常貼心的小功能稱作 篩選器 ,裏頭新增規則時可以做到 URI grouping 效果!

也就是,有些網址會帶很多參數,如:

/service?country=US
/service?country=TW
/service?country=JP&lang=

可以透過篩選器把他們都整合成一則:/service

如此,在觀看即時數據時,就可以一眼看出哪個服務最多人使用了!

使用方式:

資料檢視 -> 挑選/新建一個項目 -> 篩選器 -> 新增篩選器 -> 篩選器類型 選擇 自訂 -> 搜尋與取代

設定完後,下方還有 "驗證這個篩選器" ,很貼心

接著就能靠正規表達式子取代掉,達成 URI Grouping 效果。後續也可以透過這個篩選器,把不要看的流量去掉,讓人可以專注在該重視的項目上。

2017年6月15日 星期四

透過 Nginx proxy_pass 架構,進行 Service migration

有一個舊網站已活了數年,改造的方向不外乎提升 SEO、移除不需要的檔案、增加系統安全、架構拆分,或是基本的 Web Framework 的抽換使用等等。對於一個 IoT 產業來說,包袱多多,像是 device 不見得會更新到新版,更別說會跟隨 HTTP 301/302 去取得新資源,甚至新網站的開發還沒辦法一步到位全部切換,只好透過 Nginx proxy_pass 架構去處理相容並扛流量了。

在此使用 upstream 管理舊機器們,並且添加新的 log format 多紀錄 $upstream_addr 資訊以便後續維護:

log_format add_proxy_pass '$remote_addr - $remote_user [$time_local] [=$upstream_addr=] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

resolver 8.8.8.8;
upstream oldserver {
hostname1;
hostname2;
hostname3;
}


後續,都是在 nginx server {} 定義範圍下。

更改 log 記錄格式:

access_log  /var/log/nginx/access.log add_proxy_pass;

預期 http client 能處理 HTTP 301/302 的服務位置,給予更佳的 SEO URL:

location ~ old_page\.php$ {
return 301 $scheme://$host/new/page/;
}


對於不能用 HTTP 301/302 的,則改用 proxy_pass 機制:

location ~ ^/old/resource {
proxy_pass http://oldserver$uri;
}


對於,有些文件很清楚要更改內文關鍵字的,可以善用 ngx_http_sub_module:

location /old/resource/file\.json {
proxy_pass http://oldserver$uri;
sub_filter_types *;
sub_filter_once off;
sub_filter '//old.hostname/' '//cdn.hostname/';
}


也可以順順換成 CDN 架構囉。

2014年7月7日 星期一

[Linux] 使用 PCRE 進行字串取代 (C++/CPP/Regular Express/Replace) @ Ubuntu 14.04

安裝:

$ sudo apt-get install libpcre3-dev

程式碼:

#include <iostream>
#include <string>
#include <pcrecpp.h>

int main() {
        std::string s = "Hello 123-234-456 World";
        pcrecpp::RE("[0-9]+").GlobalReplace("", &s);
        std::cout << "Result: " << s <<"\n";
        return 0;
}


結果:

$ g++ -g t.cpp -lpcrecpp && ./a.out
Result: Hello -- World