成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

mdwiki開(kāi)發(fā)之路二資源與踩坑記錄

molyzzx / 1864人閱讀

摘要:側(cè)邊欄選用提到的。將改成來(lái)訪問(wèn)的形式組織代碼出現(xiàn)循環(huán)的問(wèn)題往往意味著代碼的布局有問(wèn)題,可以合并或者分離競(jìng)爭(zhēng)資源。分離的話就是把需要的資源提取到一個(gè)第三方文件去??傊褪菍⒀h(huán)變成單向。對(duì)于周期性任務(wù)缺一不可。其他任務(wù)可僅運(yùn)行。

1、bootstrap代碼片段:

如果你沒(méi)有藝術(shù)細(xì)胞,偷懶的方法就是到這上面去找,比如登錄框界面等。
側(cè)邊欄選用:http://www.designerslib.com/b...提到的http://bootsnipp.com/fullscre...。
其他一些資源:
w3schools-howto
一個(gè)比較炫的html模板(雖然最后沒(méi)有采用)
bootstrap主題

2、DIV的CSS height:100%無(wú)效的解決辦法:

在css當(dāng)中增加上:

html, body{ margin:0; height:100%; }
3、Alembic migration失敗,Sqlite lack of ALTER support解決辦法:

在env.py中設(shè)置render_as_batch=True

context.configure(
    connection=connection,
    target_metadata=target_metadata,
    render_as_batch=True
)
4、markdown擴(kuò)展:

http://pythonhosted.org/Markd...
比較有用的
Table of Contents(toc)、
CodeHilite(代碼高亮)、
Meta-Data(文件前面可以添加元數(shù)據(jù),比如標(biāo)題,作者等)、
New Line to Break(換行即新行,而不是像原生markdown那樣得換兩行)、
Tables(表格插件)

5、關(guān)于Flask的:

Flask request,g,session的實(shí)現(xiàn)原理
深入 Flask 源碼理解 Context
Flask Session超時(shí)設(shè)置
默認(rèn)情況下,flask session在你關(guān)閉瀏覽器的時(shí)候失效。你可以通過(guò)設(shè)置permanent session來(lái)改變這一行為。

from datetime import timedelta
from flask import session, app

@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=30)

默認(rèn)情況下,permanent_session_lifetime是31天。

6、關(guān)于SQLAlchemy:

SQLAlchemy 使用經(jīng)驗(yàn)
SqlAlchemy query many-to-many relationship

class Restaurant(db.Model):
    ...

    dishes = db.relationship("Dish", secondary=restaurant_dish,
        backref=db.backref("restaurants"))

然后檢索所有的dishes for a restaurant, you can do:

x = Dish.query.filter(Dish.restaurants.any(name=name)).all()

產(chǎn)生類(lèi)似如下SQL語(yǔ)句:

SELECT dish.*
FROM dish
WHERE
    EXISTS (
        SELECT 1
        FROM restaurant_dish
        WHERE
            dish.id = restaurant_dish.dish_id
            AND EXISTS (
                SELECT 1
                FROM restaurant
                WHERE
                    restaurant_dish.restaurant_id = restaurant.id
                    AND restaurant.name = :name
            )
    )


7、解決循環(huán)import的問(wèn)題思路

1.延遲導(dǎo)入(lazy import)
即把import語(yǔ)句寫(xiě)在方法或函數(shù)里面,將它的作用域限制在局部。
這種方法的缺點(diǎn)就是會(huì)有性能問(wèn)題。
2.將from xxx import yyy改成import xxx;xxx.yyy來(lái)訪問(wèn)的形式
3.組織代碼
出現(xiàn)循環(huán)import的問(wèn)題往往意味著代碼的布局有問(wèn)題,可以合并或者分離競(jìng)爭(zhēng)資源。合并的話就是都寫(xiě)到一個(gè)文件里面去。分離的話就是把需要import的資源提取到一個(gè)第三方文件去??傊褪?將循環(huán)變成單向。
具體解決方案后續(xù)文章再貼代碼

8、關(guān)于Python的一些:

Good logging practice in Python
How do I check if a variable exists?
To check the existence of a local variable:

if "myVar" in locals():
  # myVar exists.

To check the existence of a global variable:

if "myVar" in globals():
  # myVar exists.

To check if an object has an attribute:

if hasattr(obj, "attr_name"):
  # obj.attr_name exists.
if("attr_name" in dir(obj)):
    pass
  

還有一個(gè)不是很優(yōu)雅地方案,通過(guò)捕獲異常的方式:

try:
    myVar
except NameError:
    myVar = None
# Now you"re free to use myVar without Python complaining.
9、關(guān)于Git與Github

How do I delete a Git branch with TortoiseGit
為什么給GIT庫(kù)打TAG不成功

如何修改github上倉(cāng)庫(kù)的項(xiàng)目語(yǔ)言?

項(xiàng)目放在github,是不是經(jīng)常被識(shí)別為javascript項(xiàng)目?知乎這篇問(wèn)答給出了答案。
問(wèn)題原因:
github 是根據(jù)項(xiàng)目里文件數(shù)目最多的文件類(lèi)型,識(shí)別項(xiàng)目類(lèi)型.
解決辦法:
項(xiàng)目根目錄添加 .gitattributes 文件, 內(nèi)容如下 :

*.js linguist-language=python

作用: 把項(xiàng)目里的 .js 文件, 識(shí)別成 python 語(yǔ)言.

10、關(guān)于IDE的:

Indexing excluded directories in PyCharm
pycharm convert tabs to spaces automatically

11、關(guān)于Celery的:

periodic task for celery sent but not executed
這個(gè)由于我沒(méi)仔細(xì)看官方文檔,搞了好久。Celery的周期性任務(wù)scheduler需要配置beat和運(yùn)行beat進(jìn)程,但是僅僅運(yùn)行beat進(jìn)程可以嗎?不行!我就是這里被坑了。還得同時(shí)運(yùn)行一個(gè)worker。也就是說(shuō)beat和worker都需要通過(guò)命令行運(yùn)行。對(duì)于周期性任務(wù)beat缺一不可。其他任務(wù)可僅運(yùn)行worker。

12、在supervisor或gunicorn設(shè)置環(huán)境變量

如果采用gunicorn命令行的形式:-e選項(xiàng)

gunicorn -w 4 -b 127.0.0.1:4000 -k gevent -e aliyun_api_key=value,SECRET_KEY=mysecretkey app:app 

如果采用gunicorn.conf.py文件的形式:raw_env

import multiprocessing

bind = "127.0.0.1:4000"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class="gevent"
proc_name = "mdwiki"
user = "nginx"
chdir="/opt/mdwiki"
#daemon=False
#group = "nginx"
loglevel = "info"
#errorlog = "/home/myproject/log/gunicorn.log"
#accesslog=
raw_env = [
   "aliyun_api_key=value",
   "aliyun_secret_key=value",
   "MAIL_PASSWORD=value",
   "SECRET_KEY=mysecretkey",
]
#ssl
#keyfile=
#certfile=
#ca_certs=

如果采用supervisor配置環(huán)境變量

[program:mdwiki]
environment=SECRET_KEY=value,aliyun_api_key=value,aliyun_secret_key=value,MAIL_PASSWORD=value
command=/usr/bin/gunicorn -n mdwiki -w 4 -b 127.0.0.1:4000 -k gevent app:app 
directory=/opt/mdwiki
user=nginx
autostart=true
autorestart=true
redirect_stderr=true

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38245.html

相關(guān)文章

  • mdwiki開(kāi)發(fā)之路資源踩坑記錄

    摘要:側(cè)邊欄選用提到的。將改成來(lái)訪問(wèn)的形式組織代碼出現(xiàn)循環(huán)的問(wèn)題往往意味著代碼的布局有問(wèn)題,可以合并或者分離競(jìng)爭(zhēng)資源。分離的話就是把需要的資源提取到一個(gè)第三方文件去??傊褪菍⒀h(huán)變成單向。對(duì)于周期性任務(wù)缺一不可。其他任務(wù)可僅運(yùn)行。 1、bootstrap代碼片段: 如果你沒(méi)有藝術(shù)細(xì)胞,偷懶的方法就是到這上面去找,比如登錄框界面等。側(cè)邊欄選用:http://www.designerslib....

    linkFly 評(píng)論0 收藏0
  • FE.WX-小程序“無(wú)聊廣場(chǎng)”游戲前端性能優(yōu)化踩坑攻略

    摘要:本文主要針對(duì)小程序無(wú)聊廣場(chǎng)的前端開(kāi)發(fā)內(nèi)容做總結(jié),記錄常見(jiàn)的一些老生常談的進(jìn)階手法,對(duì)小程序中的動(dòng)畫(huà)音頻等踩坑做出解決方案。 背景 一個(gè)交互不復(fù)雜,對(duì)刷新頻率和動(dòng)畫(huà)效果要求不高的小游戲,不需要使用canvas主導(dǎo)的解決方案,使用dom操作一樣可以完成。節(jié)省了cocos creater的學(xué)習(xí)成本,值得一試。本文主要針對(duì)小程序無(wú)聊廣場(chǎng)的前端開(kāi)發(fā)內(nèi)容做總結(jié),記錄常見(jiàn)的一些老生常談的進(jìn)階手法,對(duì)...

    qpal 評(píng)論0 收藏0
  • mdwiki開(kāi)發(fā)之路一技術(shù)選型

    摘要:是一款系統(tǒng),可以作為個(gè)人或小型團(tuán)隊(duì)的知識(shí)庫(kù)管理系統(tǒng)。再加上目前開(kāi)始學(xué)習(xí)與爬蟲(chóng)。技術(shù)選型作為新手,義不容辭為什么就為了原生支持開(kāi)玩笑因?yàn)榇砹说奈磥?lái),而且越來(lái)越多的庫(kù)已經(jīng)遷移到了,沒(méi)有什么理由不選擇它。 mdwiki是一款markdown wiki系統(tǒng),可以作為個(gè)人或小型團(tuán)隊(duì)的知識(shí)庫(kù)管理系統(tǒng)。項(xiàng)目地址:本系列文章最后一篇給出(需要時(shí)間整理和測(cè)試) 為什么我要開(kāi)發(fā)mdwiki? 目前本人的...

    pubdreamcc 評(píng)論0 收藏0
  • mdwiki開(kāi)發(fā)之路一技術(shù)選型

    摘要:是一款系統(tǒng),可以作為個(gè)人或小型團(tuán)隊(duì)的知識(shí)庫(kù)管理系統(tǒng)。再加上目前開(kāi)始學(xué)習(xí)與爬蟲(chóng)。技術(shù)選型作為新手,義不容辭為什么就為了原生支持開(kāi)玩笑因?yàn)榇砹说奈磥?lái),而且越來(lái)越多的庫(kù)已經(jīng)遷移到了,沒(méi)有什么理由不選擇它。 mdwiki是一款markdown wiki系統(tǒng),可以作為個(gè)人或小型團(tuán)隊(duì)的知識(shí)庫(kù)管理系統(tǒng)。項(xiàng)目地址:本系列文章最后一篇給出(需要時(shí)間整理和測(cè)試) 為什么我要開(kāi)發(fā)mdwiki? 目前本人的...

    李昌杰 評(píng)論0 收藏0
  • mdwiki開(kāi)發(fā)之路

    摘要:寫(xiě)不下去了,直接貼地址吧。菜鳥(niǎo)第一個(gè)項(xiàng)目,求輕噴。后續(xù)打算變?yōu)椴捎脕?lái)管理。加入圖片和文章爬蟲(chóng)功能。 寫(xiě)不下去了,直接貼地址吧。菜鳥(niǎo)第一個(gè)python項(xiàng)目,求輕噴。后續(xù)打算變client-side session為server-side session,采用redis來(lái)管理session。加入圖片和文章爬蟲(chóng)功能。重構(gòu)代碼。 項(xiàng)目地址:https://github.com/xbynet/m...

    fanux 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<