pupuliao的部落格

寫教學的最大目的是教會未來的自己

C/C++ 排序快速寫法(quick sort) 同場加映binary search

今天在看維機百科時才發現的…..

這應該算是最佳解了 時間複雜度和merge sort相同,需要的buffer 更少

 

參考資料:http://www.cplusplus.com/reference/cstdlib/

 

首先

#include <stdlib.h>

 

再來要寫 比大小的function

static int cmp(const void *a, const void *b)
{
float t=*(float *)a – *(float *)b>0
if(t>0) return 1;
else if(t==0) return 0;
else return -1;
//    return *(int *)a – *(int *)b;
}

基本上input 和output 都規定好了 ,就是看你要怎麼比,上面有float 和int 版本,只要 >0 代表大於,=0 代表相同,<0代表小於 就可以了

 

最後使用

 

float arr[10]={5.2, 3.1, 7.7, 4.5, 1.2, 9.9, 9.9, 6.6, 2.2,10.1};

qsort(arr, 10, sizeof(float), cmp); //第一個參數放array 第二個放 有n個數 第三個是 每個數的大小 第四個就是比較的function

這樣 arr 就會自動排序了

閱讀全文

Post to Twitter Post to Plurk Post to Facebook Send Gmail

MYSQL 密碼加密(透過PHP)

最近我的第一個自製PHP網站 被攻打下來了阿….

雖然不太清楚原因

 

所以最近找了個方法 把MYSQL 中所有的密碼通通加密了,這樣應該會安全些

 

參考資料

http://www.hkcode.com/programming/242

http://result945.pixnet.net/blog/post/27077947-mysql-密碼使用md5加密

 

加密方法是 透過 md5() 這個語法來完成,剛剛測試,上面兩種方法加密結果是相同的

 

我使用的方法是

在密碼 $passwd 放入SQL 之前 寫下

$passwd=md5($passwd);

 

如果 資料庫原先是明碼存的,可以透過 update `XXX` SET `passwd`=md5(passwd) where 1 來解決

不過在轉碼之前請先備份,還有確保密碼長度 超過32字元

 

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

notepad++ 搜尋/取代 使用正規表示式

最近剛好需要大規模清除 html 中的部分文字

所以在網路上找了了這個方法

參考資料 http://scott0228.blogspot.tw/2009/04/notepad-regular-expression.html

首先先勾選底下的 "用類型表示"

OK 這樣就可以是用正圭表示法了

圖例中 我是要把所有的style 處理掉

nopad

 

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

請勿使用AppServ

前陣子看到一篇 台大關於AppServ的安全通報,建議大家 不要在使用AppServ來架設網站

AppServ 應該算是一套 XAMP 的整合包,但是因為久沒更新 被發現許多漏洞沒有補上

參考網址:http://www.cc.ntu.edu.tw/chinese/epaper/0026/20130920_2607.html

 

底下直接引用他們的文章

 

網站管理者不可不知:AppServ套件成為駭客入侵後門

作者:李美雯 / 計算機及資訊網路中心網路組程式設計師


使用AppServ可以在Windows作業系統中輕鬆安裝與架設網站伺服器,AppServ包含Apache、PHP、Mysql與 phpMyAdmin等網站環境元件,深受一般人的歡迎。因為AppServ已經5年未更新,駭客利用其phpMyAdmin的漏洞植入木馬後門程式,因 而觸發多起資安事件。本中心特此深入分析AppServ套件漏洞與木馬後門的運作原理,以提供網站管理者有效解決方案。

前言
102年6月份,計資中心接獲本校45台主機Sdbot資安事件,這45台異常主機非常特別,同時觸發內對外的IRC異常連線及外對內的Sdbot異常連 線。雖然在通報後主機管理者有處理異常主機,但有些主機卻因處理不完善,而再次觸發同樣的資安事件。透過網路流量分析系統也發現遭通報的異常主機對外發出 大量的UDP Flooding攻擊。為了確實回復異常主機以有效阻止異常主機對外攻擊,我們決定深入分析Sdbot木馬程式的運作原理,提供本校網站管理者最佳解決方 案。

AppServ漏洞與Sdbot運作原理
在隨機分析3台被通報為異常主機的網路封包後,我們發現這些異常主機的phpMyAdmin頁面存在著被外部主機存取的紀錄,初步得知這些異常主機的問題 與phpMyAdmin有關。而phpMyAdmin可讓管理者透過Web介面管理後端Mysql資料庫,提供資料庫之匯出、匯入、刪除與修改等功能,使 用該套件可增加管理後台資料庫的便利性。至於為何以及如何被惡意程式操控,則需要更進一步的分析。

經過向被通報的異常主機管理者查詢後確認這些主機都有一個共通性,均安裝了AppServ 2.5.10套件。AppServ套件在安裝時自動幫使用者將Apache、PHP、Mysql與PhpMyAdmin四個套件安裝並設定好,就因為這樣的方便性,許多學生架設網站時喜好採用這個整合套件,圖一為安裝好AppServ後的預設首頁。

 

閱讀全文

Post to Twitter Post to Plurk Post to Facebook Send Gmail

從code.google轉sourceforge.net

今天我在更新我的小說下載器時…..

幹 code.google 不給上傳了,找了半天原因終於找到一篇公告

大意是…..有人亂用此功能所以 google 將停止這個功能,不會刪檔,但是不給上傳新的….

 

好吧,我就跳了,因為google 建議使用的google drive 沒有下載統計阿….

以下是 可以自動匯入轉換的連結

https://sourceforge.net/p/forge/documentation/Google%20Code%20Importer/

 

首先要註冊sourceforge.net

恩 我註冊時沒收到認證信,只好開IRC 找客服….

 

喔 在專案中的 admin 有import 可以讓你輕鬆匯入 很方便的

 

還有 sourceforge 很多功能似乎都是背景作業,所以 匯入按下去後 要等…

Post to Twitter Post to Plurk Post to Facebook Send Gmail

tar 壓縮/解壓縮指令

參考資料:http://www.vixual.net/blog/archives/127

 

常用參數

  • -c 打包一個 tar 檔案
  • -x 解開一個 tar 檔案
  • -t 檢視 tar 檔案的內容
  • -z 使用 gzip 壓縮
  • -v 顯示建立 tar 檔案的過程
  • -P 使用絕對路徑
  • -f 指定 tar 檔案的檔案名稱 (此參數的後面必須接目標檔名)

常用語法

  • 建立壓縮檔
    tar -czvf 檔案名稱.tgz 來源檔案

    來源檔案 壓縮後,打包成一個名稱為 檔案名稱.tgz 的壓縮檔,來源檔案 可以是檔案或目錄。
    來源檔案 也可以有很多個,以空白字元分隔:

    tar -czvf 檔案名稱.tgz 來源檔案1 來源檔案2 ... 來源檔案n
  • 檢視壓縮檔的內容
    tar -tzvf 檔案名稱.tgz
  • 解開壓縮檔的檔案到目前的目錄
    tar -xzvf 檔案名稱.tgz
  • 複製目錄
    tar -cvf - 來源目錄 | tar -xvf -

Post to Twitter Post to Plurk Post to Facebook Send Gmail

DNS 狀況檢查測試

因為在做系上網管,所以需要處理DNS 問題,這裡是留一些 DNS 狀態檢查網站

1.http://www.ifreesite.com/dns/

可以針對特定DNS 做測試,確認有無修改

2.http://www.intodns.com/

可以針對特定網址做DNS 健康檢查

Post to Twitter Post to Plurk Post to Facebook Send Gmail

OpenCV cvWaitKey(int delay)的使用方法

參考資料http://jackiechensuper.blogspot.tw/2013/02/cvwaitkey.html

 

在openCV 中,如果要顯示圖片、影片常常會用到這個function,其原意是等但使用者按按鈕,且等待多久

主要放在cvShowImage() 之後,可以當作控製播放速度,他的單位是ms

以下面為範例就是等待10ms 如果在這中間有按按鈕,就會繼續下去。

c = cvWaitKey(10);
printf(\”%c,%d\”,c,c)

 

如果是永久等代直到按下按鈕,可以寫成

c = cvWaitKey(0);
printf(\”%c,%d\”,c,c)

Post to Twitter Post to Plurk Post to Facebook Send Gmail

Copyright © 2024. All Rights Reserved.

歡迎光臨
初音