臨時(shí)需求也要寫腳本工具

通過(guò)分析問(wèn)題茬祷,一步步拆解問(wèn)題,原先不是很確定的人工處理的方案竟终,通過(guò)寫工具就變成一個(gè)非瞅疴可靠的解決方案了。

一统捶、背景

前幾天榆芦,同事突然接到一個(gè)緊急需求:將所有的 XXX 文字替換為 YYY 文字。
如果僅僅看著需求喘鸟,很簡(jiǎn)單匆绣,找到所有的 XXX 替換即可。

但是這個(gè)問(wèn)題在于什黑,這些 XXX 文字都在圖片上崎淳。
幸運(yùn)的是,所有圖片地址都已經(jīng)在數(shù)據(jù)庫(kù)里面了愕把。
不幸的是拣凹,這些圖片地址里面有一些無(wú)關(guān)的文字,需要提取出圖片地址恨豁。

面對(duì)這樣的臨時(shí)需求嚣镜,該如何找到一個(gè)方案來(lái)解決呢?

二橘蜜、手動(dòng)處理

分析一:雖然文字在圖片上菊匿,但是有這個(gè)文字的圖片應(yīng)該很少。
方案一:先手動(dòng)把最容易找到的圖片替換了扮匠。

同事采用了最原始的方案一捧请。

我看到這個(gè)方案,問(wèn)了幾個(gè)問(wèn)題棒搜。

問(wèn)題1:圖片在數(shù)據(jù)庫(kù)替換修復(fù)后疹蛉,外網(wǎng)全部生效需要多生時(shí)間?
回答1:新系統(tǒng)需要清洗全量數(shù)據(jù)(目前有幾億數(shù)據(jù))力麸。

問(wèn)題2:如果花費(fèi)若干小時(shí)清洗完數(shù)據(jù)了可款,發(fā)現(xiàn)漏了怎么辦育韩?
回答2:。闺鲸。筋讨。

問(wèn)題3:如果人工排查數(shù)據(jù)庫(kù)的圖片地址,怎么樣摸恍?
回答3:數(shù)據(jù)庫(kù)里圖片地址太多悉罕,人工不太可行。

對(duì)于默認(rèn)方案立镶,幾乎所有人都可以想到壁袄。
但是大部分人沒(méi)去思考默認(rèn)方案是否可以 100% 的解決問(wèn)題。
如果沒(méi)有 100% 解決媚媒,代價(jià)又是什么嗜逻。

三、腳本處理

基于手動(dòng)解決這個(gè)問(wèn)題可能有遺漏缭召,我又問(wèn)了另外一個(gè)問(wèn)題栈顷。

問(wèn)題4:圖片去重后會(huì)很多嗎?
回答4:不會(huì)很多嵌巷,可能有幾十個(gè)或一百多個(gè)萄凤。

明確了圖片不是很多,我提出一個(gè)方案:寫個(gè)腳本下載所有圖片搪哪,然后再人工確認(rèn)蛙卤。

同事發(fā)出疑問(wèn)5:文字在圖片中,怎么判斷圖片是否有這個(gè)文字噩死?
回答5:圖片全部下載下來(lái),人眼看就行了神年。

接著同事提出下個(gè)問(wèn)題6:圖片地址在數(shù)據(jù)庫(kù)中已维,URL夾雜在其他文本中,怎么辦已日?
回答6:先從數(shù)據(jù)庫(kù)導(dǎo)出含圖片地址的文本數(shù)據(jù)垛耳,分析一下數(shù)據(jù),處理一下數(shù)據(jù)飘千,提取出圖片地址即可堂鲜。

同事好像還是不明白的意思,于是我說(shuō):我來(lái)寫這個(gè)工具吧护奈。

四缔莲、腳本工具

問(wèn)題很明確了,我們需要幾步來(lái)處理霉旗。

1痴奏、導(dǎo)出文本數(shù)據(jù)
2蛀骇、處理文本數(shù)據(jù),得到所有圖片地址并去重
3读拆、下載所有圖片地址
4擅憔、人工快速找到有對(duì)應(yīng)文字的圖片與地址

第一步:一條 SQL導(dǎo)出數(shù)據(jù)。
大概如下:

1.  mysql -e "select field1,field2 from table"  > data_001.txt`

第二步:分析數(shù)據(jù)特征檐晕。
分析數(shù)據(jù)后暑诸,發(fā)現(xiàn)有下面三個(gè)特征。

1辟灰、圖片地址中沒(méi)有逗號(hào)和空格个榕,數(shù)據(jù)庫(kù)中多個(gè)圖片地址會(huì)用逗號(hào)或者分隔。
2伞矩、對(duì)于圖片地址笛洛,都是都有 http 前綴。
3乃坤、部分圖片地址苛让,在 http 前有一些其他連續(xù)字符,大概格式時(shí) xxx=http湿诊,而且 xxx 以數(shù)字為前綴狱杰。

第三步:對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化。
我敲了幾個(gè)命令就得到了想要的圖片地址厅须。

1.  sed 's/[; ]/\n/g' #將所有的逗號(hào)和空格替換為換行`

2.  grep "http" #篩選出圖片地址`

3.  sed 's/^[0-9]\+[^=]\+=//' #去除 xxx=  數(shù)字前綴`

4.  sort  #排序`

5.  uniq #去重`

由此仿畸,就只剩最后一步:下載所有圖。

image

下載后朗和,windows 文件夾調(diào)整為 中等圖標(biāo)错沽,就可以預(yù)覽所有圖標(biāo)了。

PS:同事又問(wèn)怎么根據(jù)數(shù)字圖片名找到圖片地址呢眶拉? 我只說(shuō)了兩個(gè)字:行號(hào)千埃。

后來(lái),我發(fā)現(xiàn)也可以不下載圖片忆植,于是我就生成了一個(gè)包含所有圖片的 HTML放可, 瀏覽器打開(kāi)就可以看到所有圖片了。

image

五朝刊、最后

當(dāng)然耀里,下載所有圖片后,發(fā)現(xiàn)只有一張圖片有目標(biāo)文字拾氓。
但是第二個(gè)方案卻比第一個(gè)方案更可靠冯挎。

因?yàn)榈谝粋€(gè)方案具有不確定性,萬(wàn)一沒(méi)有徹底修復(fù)就需要花費(fèi)很多時(shí)間再來(lái)一次咙鞍。
而第二個(gè)方案花了我五分鐘织堂,就 100% 確保徹底解決了這個(gè)問(wèn)題叠艳。

寫這篇文檔的目的是想告訴大家,很多事情可以通過(guò)腳本工具化來(lái)解決易阳。
而寫這些腳本工具也并沒(méi)有想象的那么難(并不需要圖片識(shí)別)附较,也沒(méi)有浪費(fèi)多少時(shí)間(5分鐘)。
但是潦俺,腳本化可以得到一個(gè)靠譜的解決方案拒课。

總的來(lái)說(shuō),通過(guò)分析問(wèn)題事示,一步步拆解問(wèn)題早像,原先不是很確定的人工處理的方案,通過(guò)寫工具就變成一個(gè)非承ぞ簦可靠的解決方案了卢鹦。

2019-08-21 晴天 《完》

-EOF-

本文公眾號(hào):天空的代碼世界

個(gè)人微信號(hào):tiankonguse

QQ算法群:165531769(不止算法)

知識(shí)星球:不止算法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市劝堪,隨后出現(xiàn)的幾起案子冀自,更是在濱河造成了極大的恐慌,老刑警劉巖秒啦,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熬粗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡余境,警方通過(guò)查閱死者的電腦和手機(jī)驻呐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芳来,“玉大人含末,你說(shuō)我怎么就攤上這事〖瓷啵” “怎么了答渔?”我有些...
    開(kāi)封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侥涵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宋雏,這世上最難降的妖魔是什么芜飘? 我笑而不...
    開(kāi)封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮磨总,結(jié)果婚禮上嗦明,老公的妹妹穿的比我還像新娘。我一直安慰自己蚪燕,他們只是感情好娶牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布奔浅。 她就那樣靜靜地躺著,像睡著了一般诗良。 火紅的嫁衣襯著肌膚如雪汹桦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天鉴裹,我揣著相機(jī)與錄音舞骆,去河邊找鬼。 笑死径荔,一個(gè)胖子當(dāng)著我的面吹牛督禽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播总处,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼狈惫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹦马?” 一聲冷哼從身側(cè)響起胧谈,我...
    開(kāi)封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菠红,沒(méi)想到半個(gè)月后第岖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡试溯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蔑滓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遇绞。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡键袱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摹闽,到底是詐尸還是另有隱情蹄咖,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布付鹿,位于F島的核電站澜汤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舵匾。R本人自食惡果不足惜俊抵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坐梯。 院中可真熱鬧徽诲,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钱贯,卻和暖如春挫掏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喷舀。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工砍濒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硫麻。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓爸邢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親拿愧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杠河,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 如何好的表達(dá)觀點(diǎn) 學(xué)到:正確的表達(dá)觀點(diǎn)并不是和他人訴說(shuō)什么,而是你的表達(dá)使對(duì)方改變了什么浇辜。就像你去吃飯“服務(wù)員來(lái)盤...
    忎染閱讀 155評(píng)論 0 0
  • 天然纖維成分的膜布絲滑親膚券敌,料體質(zhì)地透明,對(duì)于博主這種混合敏感肌來(lái)說(shuō)柳洋,使用毫無(wú)負(fù)擔(dān)待诅,面膜紙緊密有彈性,上臉炒雞炒雞...
    Amybubu閱讀 135評(píng)論 0 0
  • 文|可森 圖|可森 《月光》一曲,2010年绪囱,由羽泉組合演唱测蹲,收錄于其原創(chuàng)音樂(lè)專輯《@自己》中。后李健在參加《我是...
    沐清湶閱讀 2,173評(píng)論 5 9
  • 我們就這樣一次又一次因?yàn)橐患虑闋?zhēng)論鬼吵,我知道你是在為我考慮也明白你的良苦用心扣甲。可是老公你讓我怎么想怎么做齿椅,你沒(méi)有設(shè)...
    陳凱格閱讀 188評(píng)論 0 1