2011-01-08 20 views
4

我是編程的新手,我一直在使用appengine來幫助我學習python和一般編碼。我正在快速變好,我一直都很喜歡它:)從appengine轉移到完整django的下一步是什麼?

Appengine讓我可以深入寫作我的應用程序並獲得一些可用的工作內容(請參閱http://www.7bks.com/)。但我意識到,我越來越多地在自我約束下學習越久,並將自己鎖定在一個單一的系統中。

我想轉移到開發完整的Django(因爲Django看起來超酷!)。我的下一步是什麼?爲了讓你感覺我的知識水平:

  • 我不是一個UNIX用戶
  • 我不熟悉命令行控制(我仍然完全使用AppEngine上/蟒蛇通過的AppEngine SDK)
  • 我從來沒有編程任何其他任何比python,除了appengine之外的任何地方
  • 我知道SQL這個詞,但不知道MySQL是真的還是如何使用它。

那麼,具體有:

  • 什麼是我需要學習如何啓動和運行具有完全的Django/Python的技能?
  • 如果我要去別的地方,我想我需要學習一些系統管理員類型的技能(甚至可能是unix?)。有沒有提供輕鬆託管(如appengine),但支持Django的任何地方?
  • 我聽到這樣的偉大的事情有關,我考慮改用回報率和去那裏

的Heroku我明白,我可能還沒有準備好擺脫AppEngine上離開,只是還沒有,但我狠狠的激情學習者(http://www.7bks.com/blog/179001),如果我知道我需要學習的所有步驟,就會喜歡它,所以我可以着手學習它們。目前,我甚至不知道我需要學習什麼步驟!

非常感謝。對不起,這不是一個具體的編程問題,但我環顧四周,並沒有找到一個好的方法,我的經驗水平的人,我認爲其他人會讚賞一個好的路線圖,我們需要學習的東西得到啓動並運行。

感謝,

湯姆

PS - 若有人在倫敦和幻想我展示在人的繩索,將是超真棒:)

+0

有多個備選平臺App Engine的,包括Appscale和TyphoonAE,這樣你就不會使用App Engine的鎖定自己英寸有沒有你想離開的具體原因? – 2011-01-11 23:56:35

回答

2

首先,你可以通過執行通過學習一門新語言的一些回報率的工作中受益。但是,我不知道現在你是否還在學習,這對你是否會完全有益。暫時我會堅持使用Python和Django(或AppEngine),直到您掌握一些更高級的概念。那麼,通過一切手段,學習新語言將會非常棒。

至於從AppEngine轉移到Django。沒有很多是不同的。您定義模型的方式很相似,但定義的類型不同。如你所說,託管是另一個考慮因素。

應該有很多託管選項(mod_wsgi就是你之後)基於Apache。特別是Django看起來頗受歡迎,並且託管通常會出現在流行的框架中。

我不認爲你需要知道太多的系統管理員的東西。這將取決於您可以找到的託管類型。數據庫也一樣。託管服務提供商通常會提供預配置的數據庫,因此您不必擔心太多。

Django以及許多其他框架提供了一個ORM(對象關係映射器),它通過調用對象的方法和訪問它們的屬性來抽象出必須編寫SQL的方法。儘管如此,我建議學習一點SQL來理解它。

Django tutorial非常棒!如果你決定去Django路線,我強烈建議你完成整個事情。一個開發服務器捆綁在一起,所以你可以立即嘗試你的工作,而不用擔心提供商。一旦你有想要與世界分享的東西,那麼你可以擔心主機。

我開始使用Windows進行Django開發,這很容易。你需要做的命令行工作量很小。真。不需要擔心,因爲本教程涵蓋了您需要了解的所有4個或更多的命令。

Django hosting提供了託管服務提供商的鏈接,但我不確定該列表的最新狀態。

Django入門非常簡單。一旦你想承載它,就會涉及更多的工作 - 但可能會遲一些。摩擦很小。按照教程,它將帶您通過運行服務器,設置數據庫(捆綁免費的數據庫)和編寫您的第一個應用程序。

+0

優秀 - 這是非常有益的謝謝你。聽起來像是一個很好的開始將是通過django教程。我認爲我需要先建立一個服務器,但如果我能夠沒有這樣做,那麼這是一個很好的方法:)謝謝你澄清一些關於SQL等的一些問題。我覺得比以前更有見識! – tomcritchlow 2011-01-08 12:17:07

2

什麼讓你覺得你被鎖定整合到一個平臺中?你知道Google的App Engine SDK是開源的嗎?此外,還有大學和其他組織正致力於構建在Google上下文之外使用App Engine SDK的平臺? Amazon EC2也能夠以有限的容量運行App Engine的SDK。我會說,鎖定可能不是正確的用詞。

此外,我相信隨着時間的推移AppEngine將會繼續改善。谷歌是互聯網的領導者;他們做了很棒的事情,並會繼續這樣做。我相信任何堅持使用他們的平臺作爲服務的人都會在未來的幾年中體驗到這些巨大的好處。

如果你的推理理論純粹是學術,我建議開始一個新項目。離開AppEngine的SDK與在已經構建的應用程序中從一個框架切換到另一個框架類似。就像任何框架或平臺,有必須,以便從平臺上的應用程序成功遷移到平臺B.辦理依賴

+0

儘管我同意你的觀點,但我不確定appengine應該被認爲是一個完整的解決方案選項。我喜歡選擇一些東西並堅持下去的想法,但目前,appengine感覺有點過於封閉。比如很多「標準」的Python模塊已經修改到AppEngine上工作,有些完全Django的好處例如http://docs.djangoproject.com/en/dev/topics/auth/(我不認爲可以移植到輕鬆的AppEngine?)。我當然對此仍然很陌生,但根據我迄今的經驗,我覺得我應該考慮的不是GAE – tomcritchlow 2011-01-08 12:15:48

+0

@Tom - 如果你正在做的工作只需要幾個月纔會發佈,那麼移動可能沒問題。你確實提到過這是爲了掃描學生證。但是對於一個可能跨越多年的長期項目,我建議展望未來,並考慮從現在開始的2至5年後,App Engine會是什麼樣子。我的猜測是更多的功能和功能將可用。移動是您必須根據項目標準自行決定的決定。祝你的項目:) – jmort253 2011-01-08 20:21:20

2

Django的nonrel能夠在谷歌AppEngine上運行的Django:http://www.allbuttonspressed.com/projects/django-nonrel

除此之外,還有一些雲提供像djangy https://www.djangy.com/

有了這兩個選項,你可以專注於Django和Python編程,不必關心sysadmin的東西。

在Django的主頁有開始使用Django開發一個很好的教程:http://docs.djangoproject.com/en/1.2/intro/tutorial01/

+0

感謝您指出django non-rel。你認爲這會是其他地方的appengine和full django之間的一個很好的踏腳石點嗎?我已經註冊了djangy,但還沒有收到邀請。 – tomcritchlow 2011-01-08 12:13:54

2

我需要學習如何使用完整的django/python來學習和運行哪些技能?

由於您尚未描述該應用程序,因此無法輕鬆回答該問題。你必須真正寫下技術堆棧 - 詳細地說 - 或者你永遠不知道你需要什麼技能。

技能列表大多來自您的技術選擇。所以寫下你的技術選擇。 (這是配置管理的一部分,如果你遠離GAE,則需要一項重要技能。)

由於您選擇了談論自己而不是技術選擇,所以我只能猜測您的技術使用和你需要什麼技能。

這是一個常見的技術堆棧。

  1. 從技術上講,操作系統並不重要。大多數託管環境使用開源GNU/Linux,因爲許可證價格低廉。你也可以做到這一點。你可以從VMWare開始,下載一個漂亮的Linux發行版。或者,您可以購買一臺價格便宜的PC,並直接從可以下載和刻錄的DVD映像安裝Linux。

    我的公司要求我使用他們給我的Windows PC。所以我在Windows中開發並在VMWare Linux中測試(實際上是Fedora 14)

    要學習Linux,請先下載並安裝。然後找到一個教程。然後停止使用Windows並通過干預來學習。在Windows和Linux之間來回轉換很困難。我能做到這一點,因爲我不太瞭解Windows。我將Windows視爲一個超複雜的IDE,它帶有各種非標準的非POSIX怪癖,我試圖忽略它們。

  2. RDBMS。 Python附帶SQLite。對於很多應用程序,它工作正常。它的工作原理是因爲網站往往會在查詢中佔據很大的比重,並且更新/插入,所以SQLite運行良好。 MySQL很好。在Windows以及其他操作系統上安裝和運行都很容易。

    關於Django的好處是你需要知道很少的SQL。很少。

    但是,您確實需要了解一些關於「數據控制語言」(授予,撤銷和創建用戶)以使用MySQL的知識。你不會創造很多用戶。但是你需要創建一些東西來運行。另外,隨着數據庫的成熟,您通常需要了解一些關於「數據定義語言」(Drop Table)的信息。

    您需要知道如何備份和恢復數據庫。這絕對是關鍵。

    所以找到數據庫管理員教程來開始。

    如果您的應用程序真的使用了大量複雜的數據,您需要購買真正的數據庫設計書籍,以便了解Django模型的真實工作方式。你不需要成爲一名SQL大師,但它確實有助於瞭解數據庫內部的真實情況。

  3. 應用服務器。我們使用Apache和mod_wsgi模塊。有很多選擇。託管服務在他們所需要的和他們允許的內容上有所不同。一些已經預先配置了Apache,mod_wsgi和Django。有些不。有些不允許修改Apache配置。有些人會。您可能不需要了解太多這方面的知識,因爲您可能會找到一個託管服務來處理這些細節。

    Apache教程遍佈全球。 mod_wsgi非常簡單;一旦你瞭解了Apache的工作方式,mod_wsgi就顯而易見了。

  4. 既然你有東西的工作,大概你知道HTML和CSS。這些都是重要的技能,但你可能已經有了。

  5. 既然你有東西的工作,你也可能知道很多關於配置管理和如何控制變化。這並不明顯,許多人都做錯了。如果你不瞭解CM,你應該找一些關於配置管理和變更控制的書籍或文章。

  6. 既然你有東西在工作,你也可能知道很多關於質量保證,單元測試和相關主題。如果您沒有完整的單元測試套件,那麼在開始對您的產品的下一個版本進行嚴格編碼之前,您應該先開始學習單元測試。

  7. 錯誤跟蹤,問題報告,功能請求和其他管理技能也是必不可少的。我不知道你是否有他們或沒有他們。或者你爲此使用了什麼工具。如果你一個人工作,你不需要很多手續。然而,即使你是一個人的開發者,這些仍然是關鍵技能。工作站上的粘滯便箋可以工作。重要的是管理錯誤和功能的技能。

1

嘿湯姆, 我建議你可以做出的合理評估是仔細列出了選擇的優缺點。我不後悔的方式是物理機架服務器(2006-07),搬到虛擬主機(2008),現在轉移到GAE(2009年至今)。看到新的功能被添加到GAE,成本效益是更多的原因。我同意更多的東西django可能需要在我的情況下形式預覽和形式驗證與GAE是困難或太難設置。

我想回報率,並很快想到回報率需要更多的代碼做同樣的GAE可以用更少的代碼。 也與GAE你絕對沒有硬件,可以打破。如果您轉移到機架式服務器或虛擬主機,您可以免費獲得5 GB的主機託管服務,但是當您耗盡5 GB的存儲空間並且您可能需要重新遷移,而您不想要。

MySQL已經存在了超過10年,是一個完全不同的系統。在MySQL中保存blob是可能的,但是你不認爲blobstore GAE更好嗎?

如果您選擇遷移到MySQL的一個解決方案,你可以從GAE導出你的數據,並導入到MySQL與作爲approcket這樣的工具。

親切的問候/尼克拉斯 - [R

相關問題