2016年11月16日 星期三

ssl憑證nginx 設定

首先建一個目錄
sudo mkdir /etc/nginx/ssl

進入目錄
cd /etc/nginx/ssl

產生 myserver.key和 server.csr

sudo openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr

產生後上傳到有簽發ssl憑證的域名商

上傳後等待域名商安全憑證簽發
簽發後下載 xxx.pem 和 yyy.crt 到 /etc/nginx/ssl

xxx 或 yyy名稱可以看自己喜歡取名, 只要記得設定 nginx時名稱路徑要對上

然後設定 nginx

sudo vi /etc/nginx/sites-enabled/nginxsetupfile

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6
    rewrite ^(.*) https://$host$1 permanent;
}
    
server {

    listen 443 ssl;
    server_name cclin.xyz;

    access_log /var/log/nginx/mysite-access.log ;
    error_log /var/log/nginx/mysite-error.log ;
    
    location /static {
        alias /home/for/static/path/static;
    }

    location / {
            uwsgi_pass 127.0.0.1:8630;
            include uwsgi_params;
    }

    ssl on;
    ssl_certificate /etc/nginx/ssl/yyy.crt;
    ssl_certificate_key /etc/nginx/ssl/myserver.key;
    
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;


}

設定完成後記得 重啟 nginx  請看之前一般http的設定

sudo service nginx restart

和 uwsgi 







還有問了一下域名商









2016年11月11日 星期五

javascript regex

regex這東西不常用, 每次用都要google老半天.
這次是因為輸入的文字會變成url slug, 所以必須使javascript做出如果是非文字都不能輸入(包括標點或空格)

<h1>Create a Thing</h1>
<form role="form" action="" method="post" enctype="multipart/form-data">
<input type='hidden' name='csrfmiddlewaretoken' value='CiTMjJgFuTMRatFsQRBUT6z8JuyRhe2g' />
<p><label for="id_name">Name:</label> <input id="id_name" maxlength="255" name="name" type="text" /></p>
<p><label for="id_image">Image:</label> <input id="id_image" name="image" type="file" /></p>
<p><label for="id_description">Description:</label> <textarea cols="40" id="id_description" name="description" rows="10">
</textarea></p>
 <input type="submit"  value="Submit" />
</form>
<script>
function fixInput(event) {
  var rx = /[!-#%-*,-/\:;$?=?˙ˋˇˊ=·、‘’@\[-\]_\{\} ]+/gi;
  event.target.value = event.target.value.replace(rx, '');
}
document.getElementById('id_name').addEventListener('keyup',  fixInput);
document.getElementById('id_name').addEventListener('change',  fixInput);
</script>


以上是要判斷input id="id_name" 裡只能有文字(不能有標點和空格及其它符號)


參考

2016年10月20日 星期四

line 1: Bad configuration option: useroaming

最近要用ssh連接aws ubuntu server突然發現一個問題

$ ssh -i "xxx.pem" ubuntu@xxx.xxx.xxx.com

/Users/korekyourin/.ssh/config: line 1: Bad configuration option: useroaming

/Users/korekyourin/.ssh/config: terminating, 1 bad configuration options

這時必須進入/Users/korekyourin/.ssh/config 把useroaming註解掉

vi /Users/korekyourin/.ssh/config

UseRoaming no

註解掉,變成

#UseRoaming no

這樣ssh到server 才能成功

2016年9月17日 星期六

python3 的lambda

bank.py

class Account:
    def __init__(self, name, number, balance):
        self.__name = name
        self.__number = number
        self.__balance = balance

    @property
    def name(self):
        return self.__name

    @property
    def number(self):
        return self.__number

    @property
    def balance(self):
        return self.__balance

    def deposit(self, amount):
        if amount <= 0:
            print('存款金額不得為負')
        else:
            self.__balance += amount

    def withdraw(self, amount):
        if amount > self.__balance:
            print('餘額不足')
        else:
            self.__balance -= amount

    def __str__(self):
        return "Account('{name}', '{number}', {balance})".format(
            name = self.__name, number = self.__number, balance = self.__balance
        )


>>> from bank import *
>>> acct = Account('Justin', '123-4567', 1000)
>>> deposit = lambda amount: Account.deposit(acct, amount)
>>> withdraw = lambda amount: Account.withdraw(acct, amount)
>>> deposit(500)
>>> withdraw(200)
>>> print(acct)
Account('Justin', '123-4567', 1300)
>>> 
[6]+  Stopped                 python3
Johnde-iPhone:object-oriented4 korekyourin$ python3
Python 3.4.4rc1 (v3.4.4rc1:04f3f725896c, Dec  6 2015, 10:40:23) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from bank import *
>>> acct = Account('Justin', '123-4567', 1000)
>>> deposit = acct.deposit
>>> withdraw = acct.withdraw
>>> deposit(500)
>>> withdraw(200)
>>> print(acct)

Account('Justin', '123-4567', 1300)


以上為Pyhton3 的lambda 範例 參考林信良老師 Python3技術手冊

2016年6月20日 星期一

2016年6月2日 星期四

用shell script 執行python

我想用shell script 執行python,並執行時要選y,並讓sh檔每10秒執行一次,,.

因為當我用 python manage.py rebuild_index 時要選y




參考


在背景執行shell script

現在我有bash 檔run_rebuild.sh

因為我logout  server 後還要server繼續執行它

在背景執行run_rebuild.sh

nohup ./run_rebuild.sh &

然後我就可以logout 了

或者


./run_rebuild.sh & exit

直接 logout了

參考

找出存在的 Shell script 的Process ID 並 kill

ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill

參考

solr

在server 端運行 solr時要登出server並讓solr繼續運行

sudo nohup java -jar start.jar &
或者
sudo java -jar start.jar & exit
直接logout server
參考

2016年4月29日 星期五

如果某個 input 沒有輸入就不能submit

html 代碼


以下引用了jquery

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

再加上這段

這樣一來id_model_number和id_name必須有輸入數據才能submit


參考

1062, "Duplicate entry 'xxx' for key 'slug

因為 models.py 裡有一個slug = models.SlugField(unique=True),,,括號裡的unique=True
,我還有一個
model_number = models.CharField(max_length=255, blank=True, null=True),,,然後views.py 有一段代碼
thing.slug = slugify(thing.model_number),,,這樣會把我輸入的 model_number傳進unique=True的slug裡,,,
所以如果重複創建同樣的model_number進去數據庫就會產生Duplicate entry 的錯誤訊息如圖

解決方式就是新增
unique=True和error_messages={'unique':"This model number has already been registered."} 
在 model_number裡,如:
model_number = models.CharField(max_length=255, blank=True, unique=True,error_messages={'unique':"This model number has already been registered."})
,,,這樣一來有重複的model_number輸入就會傳出This model number has already been registered.在form上,告訴使用者請不要輸入重複的model_number

不會有可怕的Duplicate entry 錯誤訊息

2016年4月24日 星期日

用selenium及phantomjs 的路徑要寫對喔

要先安裝好selenium及下載解壓phantomjs

pip install selenium




3865.py跟phantomjs-2.1.1-macosx同一路徑,要執行bin裡的phantomjs這樣寫



然後
python3 3865.py


就出來了

會去爬這網頁







2016年3月8日 星期二

2016年3月6日 星期日

R@I.P

R@I.P , the founder of email Ray Tomlinson

十年一覺揚州夢


十年一覺揚州夢,
贏得青樓薄倖名。

半夜還沒睡,偶然讀到杜牧的這首,,有些感觸,有時候人生的一些際遇回頭望去也不過就像是一場夢罷了

一切有為法
如夢幻泡影   ~金剛經

2016年3月3日 星期四

ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting

Pillow 使用pip 安裝在 virtualenv 發生問題,,,後來發現Pillow 3.0以上要先裝 libjpeg
環境 :ubuntu server 14.04

sudo apt-get install python-dev
sudo apt-get install libjpeg8-dev
sudo pip install Pillow

2016年2月28日 星期日

台北和上海生活體驗

最近幾年常跑大陸有些感觸決定把它寫下來.
本文主要以上海和台北來比較,因為上海算是大陸我比較熟悉的城市.上海對我的感覺是中國的紐約,金融之都.台北算是台灣的政經中心.
上海充滿了新盈的摩天大樓,,而台北充滿了30年以上的老房子,要說摩天樓在台北最多也就是拿101撐場面了,為何台北這麼多老房子呢?這跟台灣的政策有關,要拆遷很難的.上海的總人口比整個台灣還多.而大台北地區(台北市+新北市+基隆市)的面積不到上海市的1/2,,人口大台北地區加總起來才約7百萬,上海總人口約有2千4百萬.
上海的工作機會多生活壓力大.
上海是華東地區的經濟中心,華東地區人口至少有2億..而台灣總人口也才2千3百萬.而且很多外商入華的總部也都設在上海.所以如果想發展職業生涯的話,上海是比台北有優勢的.但上海生活壓力也大,高不可攀的房價和物價,台北市中心的房價也貴但市郊的房價就便宜上海郊區許多,,以我個人的感覺是上海生活及住房消費約是台北的1.5倍.生活便利性來說的話,,兩座城市都很方便,處處可見的便利商店和四通八達的地鐵.
以外觀來看的話上海市區是比台北市區漂亮許多的,台北老房子多,上海摩天樓新房子多,,但有一點有趣的是,,台灣沒有習慣伸出一根曬衣架把衣服掛上去,,而上海是處處可見這種景象.地鐵擁擠程度上海遠勝台北.上海畢竟人太多了,我就曾經看過有人在地鐵裡擠到暈過去,,這在台北坐地鐵是無法想像的.
以上只是我的個人體驗,,如果有任何錯誤歡迎指教,,謝謝.
上海靜安寺

在靜安寺附近的大樓35樓的景色

上海外灘夜景,黃浦江邊