
Stepikプラットフォームの更新された「 Webテクノロジー 」コースは、Djangoの最新バージョンとPython 2とPython 3の両方を開発する機能をサポートするようになりました。 3月2日に、都合の良いときにコースを受講して証明書を取得できるように、期限なしで「 ソフトウェア開発のタスクの設定 」を再開します。 このコースは、ビジネスアナリストおよびシステムアナリストであるSystem ApproachのCEO、Dmitry Bezuglyによって教えられています。
Stepikはオンラインコースプラットフォームです。 それらのほとんどは、割り当てられた時間にのみ開いています-これは、優柔不断な参加者がサインアップすることを奨励します。 コースは、時間通りに配信する必要があるモジュールに分割されます。 締め切りは生徒のモチベーションを高めます。 全員が対応するわけではありません-生徒の平均9%が証明書を受け取ります。 Mail.Ru Groupの最初のコースは2015年9月1日にオープンしました。 その瞬間から、67,600人がサインアップし、5300の証明書を発行しました。 これまでで最も人気のあるコースはWeb Technologiesです。 12,400人が登録しており、これは平均の2倍です。 そのため、コースを改善し、さらに便利にしようとしています。
Webテクノロジーコースについて
私たちは、 Webテクノロジーを作成して、初心者プログラマーをPythonのWebおよびバックエンド開発の世界に紹介しました。 このコースでは、サーバーの操作パターンについて説明します。 Djangoフレームワークを使用したバックエンドの開発に特に重点を置いています。 また、フロントエンド開発の基本であるHTML、CSS、JSについても説明し、追加の章ではAjaxテクノロジーとリアルタイムメッセージの配信について説明します。
コースのタスクは異なります。ある場所では正解を選択し、別の場所では特別なフィールドに入力し、別の場所ではプログラムを作成します。 プログラミングタスクは相互接続されています。 コース全体を通じて、Q&Aサービス(簡素化されたスタックオーバーフロー)を段階的に補足します。 最初にnginxとgunicornを設定し、次に開発中のDjangoアプリケーションをデプロイします。
更新の詳細について
「Webテクノロジー」には、仮想マシンで実行する必要があるタスクがあります。 結果は自動テストによって制御されます。 多くの場合、テストは、仮想マシンにロードされているユーザーアプリケーションに対してHTTP要求を行います。 回答を分析し、タスクが正しく解決されたかどうかを理解します。
しかし、多くのタスクではこれでは不十分です。 たとえば、アプリケーションモデルをテストし、必要なフィールドとマネージャーがすべて定義されていることを確認します。 この場合、テストが必要なコードの隣の仮想マシンにスクリプトをアップロードします。
最近まで、Django 1.6は仮想マシンで実行されていましたが、すべてのテストをPython 2.7で実行しました。 Djangoは古く、人々はPython 3を使用したいという多くの苦情を受けました。したがって、Django 1.6-1.10のバージョンで正しく動作するようにスクリプトを書き直しました。 また、テスト自体については、2つのインタープリターが利用可能になりました。 最初に、テストはPython 2で実行され、エラーの場合はPython 3で実行されます。
Django 1.6から1.10に切り替えるときに知っておくべきこと
 Djangoの新しいバージョンへの移行を容易にするために、アップグレード中に発生する可能性のある問題の短いリストを用意しました。  Django 1.7の重要な変更点は、データベース移行のサポートです。  Manage.pyには、 migrate
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    をmakemigrations
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ためのmigrate
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    およびmakemigrations
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     。  syncdb
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     Django 1.9で削除されました。 移行の仕組みの詳細については、 ドキュメントをご覧ください。 
 また、Django 1.7では、 アプリケーションのロードメカニズムが大幅に変更されました。 環境DJANGO_SETTINGS_MODULE
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    を使用するスタンドアロンスクリプトがある場合は、 django.setup()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    呼び出して、その中のアプリケーションを明示的に初期化する必要があります。 これは、管理コマンドを介して実行されるスクリプトには適用されません。 
 バージョン1.7では、新しいプロジェクト検証システムが導入されました。  validate
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    コマンドが削除され、続いてcheck
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    コマンドが削除されました。 問題を検出し、それらを修正するためのヒントを提供します。 
 バージョン1.8では、 AbstractUser.last_login
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    フィールドはnull
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    できnull
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     。  Django 1.10では、 AbstractUser.username
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    の長さが150文字AbstractUser.username
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    増加しました。 プロジェクトでAbstractUser
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    を使用する場合は、フィールドを変更するための移行を記述することを忘れないでください。  django.contrib.auth.Userの移行は既に存在します。 migrate
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    必要があるだけです。 
 また、バージョン1.10では、 django.conf.urls.patterns()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    メソッドが削除され、 urlpatterns
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    テンプレートの作成に使用されました。 これで、 urlpatterns
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     通常のリストを割り当てることができます。 互換性のない変更の詳細については、公式ドキュメントをご覧ください。 
Python 2から3に移行するときに知っておくべきこと
  Python 3を試してみたいと思うなら、注意すべき主な違いについて読んでください。 新しいバージョンの言語では、 print
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ステートメントはprint()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    関数に置き換えられました。 辞書メソッドのitems()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     、 keys()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    およびvalues()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    は、反復子を返すようになりました。 古いメソッドiteritems()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     、 iterkeys()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    およびitervalues()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    サポートさitervalues()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    なくなりました。 また、辞書からhas_key()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    メソッドが削除されたため、代わりにin演算子を使用する必要があります。  xrange()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    関数xrange()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     、新しいバージョンではrange()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    がそのタスクを実行するため除外されます。 
 数値タイプも変更されました。  Python 3以降、 long
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    型とint
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    型はone- long
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    結合されます。 その値には末尾のL文字がなくなったため、 repr()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    関数は出力しません。 もう1つの重要な革新は、演算子/による整数除算の置き換えです。 これで、この操作はfloat
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    型の数値を返します。 
  Python 3はstr
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    を使用してテキストを保存し、 bytes
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    を使用してバイナリデータを保存します。 これらの型は結合できないことに注意してください。そうしないと、 TypeError
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    エラーがTypeError
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     。 あるタイプを別のタイプに変換するには、関数str.encode()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    およびbytes.decode()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    使用できます。 組み込みのベースストリングタイプは削除されます。 
 順序付けられていない型を比較すると、 TypeError
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    例外がTypeError
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    れるようになりましTypeError
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     。 ユーザーオブジェクトを比較する方法はサポートされなくなったため、並べ替えには__lt__()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    関数を使用し、 __lt__()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    するには__lt__()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    および__eq__()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    を使用する必要があります。 関数builtin.sorted()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    およびlist.sort()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    は、比較関数を提供するcmp
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    引数の受け入れを停止し、 key
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    に置き換えられました。 
  raw_input()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    メソッドはinput()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    名前raw_input()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    変更raw_input()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    れました。  Python 2のinput()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    関数はeval(input())
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    と同等です。  execfile()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    メソッドを削除しました。  execfile(fn)
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    代わりに、 exec(open(fn).read())
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    使用できます。 
Python 2と3の違いのより詳細なリストはここにあります 。
コースの登録
コースに登録するには、 リンクをクリックしてください 。 3月2日から、期限なしで「 ソフトウェア開発のタスクを設定する 」コースを開始します。 また、Java、C / C ++、Hadoop、アルゴリズムプログラムなどの他のITコースもあります。 完全なリストはこちらをご覧ください。 Webテクノロジーの学習を頑張ってください!