投稿者: よろず工房

  • サーバー上でプログラムを動かす

      サーバー(Unix系)上でpythonを動かす

    1.シバン(Shebang)を用意する

     レンタルサーバーは通常Unix系のサーバーで動いている、プログラムの1行目で”pythonの実行場所”を指定する必要がある、これをシバンと呼ぶ。全てのプログラムの1行目にシバンを記述する。
     windowsサーバでは必要ありません。

    #!/・・・/・・・/・・・

     「#!」の半角文字で始まり、後続に「pythonの実行場所」を指定する。実行場所の情報については各プロバイダーの利用規約等に記載されており、pythonのバージョンごとに設けられている。
     #で始まる行はコメントして扱われ、2行目以降が指定したバージョンのpythonプログラムで実行されます。

    2.拡張子.pyを活かす

     シバンを設定するだけでpythonは動きます、ただし拡張子を.cgiとする必要が有ります。シバンが設定されていれば何処のディレクトリー配下でもpythonは動きます。
     しかし拡張子が.cgiだと他のシステムとの互換性に欠けるので、やはり拡張子は.pyのままで動かしたい場合には.htaccessを利用する。pythonプログラムの存在場所より上位のディレクトリーに設置する。

    AddHandler cgi-script .py

    3.パーミッションを設定する

     Windows環境でpythonプログラムを開発する場合には注意する必要がある。
     レンタルサーバーは通常Unix系のサーバーで動いている、必ずパーミッションを「700」以上に設定する。プログラムソースをアップロードしただけでは実行不可能な属性(600)なので呼出・書込・実行可能な属性(700)以上を設定する。

    4.改行コードを確認する

     pythonプログラムのテキストファイルの改行コードを変更する必要がある。
     pythonプログラムを改行コード「CR(Windows系)」で保存すると、文法エラーチェックでは問題が検出できないにも関わらず、ブラウザからアクセスすると「500 Internal Server Error」となる。
     テキストエディターで改行コードを「LF(Unix系)」にして保存しアップロードしてください。

  • Windows・Ubuntuファイル共有

    限られたLAN環境(自宅)の中でのファイル共有を構築する

    1.ファイル共有について

    インターネットを介しての無料ファイル共有サービス
      ・GoogleDrive(グーグル提供)
      ・OneDrive(マイクロソフト提供)
      ・DropBox(ドロップボックス提供)
      ・Evernote(エバーノート提供) 等々
     ログインする際には必ずパスワード入力のセキュリティーチエックを受けます、煩わしいですが外部からの不審なアクセスは拒否され安全に上記のサービスを受けられます。IDとパスワードが共有されれば、様々なシステム間でファイル共有が可能になります。

    ローカルエリアネットワーク(LAN)でのファイル共有
     LAN環境でファイルを共有する際の話になります。自宅でのLAN環境に適しています、職場でのLAN環境には適していません。セキュリティーに関する保護が一切ないので、仕組みとして使いやすいですが保存するデータには常に注意を払ってください。自宅内LAN環境を使って、家族同士でファイル共有することの是非はご自分で判断してください。

    2.Ubuntuに共有フォルダー作成

     共有するディレクトリ (Windows のホルダーに相当) をUbuntuで作成する。ホーム ( /home/ ) 内に共有エリア(例として「共有」ホルダーを作成)というディレクトリを作成する(その1、その2)。

    その1その2

    3.Ubuntuでのアクセス権設定

     作成した「共有」ファイルを[右クリック]し、[ロ-カルネットワーク共有」のオプションをクリックする。

    「フォルダーの共有」画面が表示されますので、[このフォルダーを共有する]にチェックを入れる(その3)。

     ファイルの共有に必要なソフトウェアがインストールされていない場合は、「共有サービスがインストールされていません」と表示されるので、「samba」をインストールする。既に「samba」がインストールされていれば、このメッセージは表示されない。

     「samba」のインストールが確認できたら、次にアクセス制限を全て外します(その4)。ここで制限を外したり設定したりできます。後は「共有を作成する」または「共有を変更する」をクリックし先に進む。

     最後に「自動的にアクセス権を付与する」をクリックしてUbuntuでの設定作業は終了です。

    その3その4

    4.Windowsの共有エリア設定

     エクスプローラの「ネットワークの場所の追加」をクリックする(その5)。その後は続けて「次へ」をクリックして順次先に進む(その6、その7)。

    その5その6その7

     「Webサイトの場所を指定する」画面で、共有エリアが存在するコンピュータの場所を「\\コンピュータ名\共有エリア名」の形式で設定する(その8)。共有エリア名とは、先にUbuntuで用意した共通エリア(例として「共有」ホルダー)の名前。初めてWebサイトの場所を指定する場合には上記のように設定する、一度設定した後は「参照」をクリックすれば場所の候補がピックアップされて表示される。

     次に「ネットワークの場所を指定する」画面で、ショートカット用に名前を付ける(その9)。

    その8その9

     以上で完了です、ネットワークドライブとしてショートカットを使って簡単にWindowsからUbuntuの共有エリアを呼び出し、自由に使うことができるようになる。

  • 必要な5つの要素

    利用するに当たって内部構成を理解しておく

    1.HTML

     Webページの構造を決める、マークアップ言語。HTMLとは「HyperText Markup Language」の略です。

     本来、Webページは文章(文字の羅列)をサーバーに乗せるだけで、作者の意図はアクセスした人に伝わります。しかし、これでは味も素っ気も無いモノとなり、徐々にアクセスされなくなっていきます。

     文章の強調したい部分に赤線でマーク(マークアップ)することがよくあります。こうした作者の意図を読者に伝えるための規則が「マークアップ言語」と呼ばれる言語体系として用意されています。

     標準化された言語体系に従って作り上げられたWebページを便宜的にHTMLで作成したと言います。HTML言語だけでWebページは作成できますのでHTMLの利用は必須です。他の言語は必要に応じて採用可否の判断をしてください。

    2.CSS

     Webページのレイアウト・デザインを決める、スタイルシート言語。CSSとは「Cascading Style Sheets」の略です。

     HTML言語でWebアプリを作成する際、事前にマークする対象とマークされた結果をスタイルシートと呼ばれるファイルに記述してHTMLとは別の場所に切り離して用意しておきます。CSSを使うことによってWebサイトに統一感が出てきます、特に大勢の人で共同開発する場合には有効な言語です。

     一つのスタイルシートで何事も決めてしまうと個別な修正に対応できなくなります。Cascadingには”段階的”といった意味があります、大局を決めたスタイルシートに局所的に決めたスタイルシートを重ね合わせることができるので、必要に応じて利用する。

    3.PHP

     Webアプリの構造を組み立てる、プログラミング言語。PHPとは「Hypertext Preprocessor」の略です。

     PHPでプログラミングすることによって、情報処理の流れをコントロールします。Webアプリの中核部分です。プログラムを使って情報をコントロールすることこそがWebアプリには必要です。

     Webアプリの構造を組み立てるにはPHP以外にも複数のプログラミング言語が有ります、自由に選んで使い分けますが、プログラミング言語の利用は必須です。

    4.JavaScript(JQuery)

     Webアプリとユーザー(アプリを使う人)とのインターフェースを取り持ち、使い勝手を良くする、プログラミング言語。

     Javaとはコーヒーの名前(何も意味は有りません)、scriptとは簡易なプログラミング言語の意味。JQueryとはJavaScriptでのプログラム開発用に必要な部品を事前に用意して集めたもの。これを利用してプログラム開発の生産性アップを図る。

     CSSでできないデザインやレイアウトをJavaScript(JQuery)では簡単に実現できます。入力途中の文字を判別して画面の一部を変えたりできます。キメ細かなことができるが要否を判断して利用する。

    5.SQL

     Webアプリで使うデータを保存したり必要に応じて取り出したりする、データベース言語。SQLとは「Structured Query Language」の略です。

     Webアプリはプログラムで判断し、データの保管やデータの取り出しにSQLを利用してデータ操作します。データを管理するためにデータベース管理システムが複数用意されています、自由に選んで使い分けますが、共通して利用されるのはSQL言語となります。

     Webアプリとして動作するためにはデータベースの利用とSQLの利用が必須です。

    要約

     必須なのはHTML(これが無ければ何も始まりません)
     次に必要なのはPHP(Program)とSQL(Dstabase)
     使いやすくするにはCSSとJavaScript

  • ショートカットの作成(途中)

    ショートカットを用意することでPCの操作が便利になります

    1.Windowsの場合

    ホルダーまたはファイルの場合
     作成対象を右クリック、「ショートカットの作成」を選択し作成する。

    Webサイトの場合
     ブラウザーのアドレスバー(URLが表示されたままで)をデスクトップへドラッグする。

    2.Ubuntuの場合

     作成対象(ディレクトリーまたはファイル)を「ctrl」+「shift」を押しながらドラッグし作成する。

     <22.04LTS向けに作成中>

  • wp_queryを使う

    外部からWPの投稿記事を取り出し編集する

    1.外部からの使用を始める

     「wp-load.php」を呼び出し、これからWP投稿記事の情報を取得することを宣言する。ディレクトリー構造を事前に調査し、「wp-load.php」の場所を指定する。

    include_once "●●●●/wordpress/wp-load.php"; 

    2.「wp_query」とは

     投稿記事のタイトルや本文の内容を取得する際に「WP_Query」といったクラスを使用する。

    3.WP_Queryの使用例

    // 取得条件を設定する
    	$args = Array
    		(
    		    'post_type' => 'post',      // 投稿を対象とする
    		    'posts_per_page' => -1,    	// 表示する投稿数(-1で全投稿)
    		);	
    	
    // クエリの定義
    	$wp_query = new WP_Query( $args ); //wp_queryに条件を渡す
     
    // ループ
    	if ( $wp_query->have_posts() )    //投稿の有無を確認する
    	  {
    	    while ( $wp_query->have_posts() )  //投稿の最後まで繰り返す
    	    	{    	
    		      $wp_query->the_post();       //内部変数とグローバル変数を紐付け
    		      $posttitle 		= get_the_title();     //タイトル
    		      $postcategory 	= get_the_category();  //カテゴリー
    					foreach($postcategory as $cat) 
    				     {	
    				     }	        
    		      $posttags = 	get_the_tags();       //タグ
    					foreach($posttags as $tag) 
    				     {	
    				     }	     
    		      $postexcerpt 	= get_the_excerpt();    //抜粋
    		      $postpermalink 	= get_the_permalink();  //パーマリンク
    		      $postdate	 	= get_the_date();            //更新日            
    	    	}
    	  } 	
    	
    	
    // 投稿データのリセット
    	wp_reset_postdata();	
    

  • テンプレートタグの使い方

    WPへのリクエストを取り扱う関数について

    1.投稿記事の取り込み口を用意する

     ループの中で$wp_queryを使用する。postは日本語にすると、投稿(記事)の意味になります。
     whileループの開始時に have_posts() を条件として指定すれば、投稿がある限りwhileループは繰り返され、投稿を取り込み終わるとループも終了します。

    	    while ( $wp_query->have_posts() )  //投稿の最後まで繰り返す
    	    	{   	
           ・・・ 投稿記事(post)がなくなるまでループ処理が繰り返される
              ・・・ 投稿記事1件を取得して、このループに入ってくる
    	    	}

    2.$wp_queryの内容を紐付ける

     反復処理の中では、$wp_query->the_post() を使用する。これによって $wp_query の内部変数とグローバル変数が投稿が1件取り込まれるたびに紐付けられる。

    		      $wp_query->the_post();       //内部変数とグローバル変数を紐付け

    3.テンプレートタグを使う

     取込まれた内容がグローバル変数に紐つくと、数百種類のテンプレートタグが自由に使えるようになります。テンプレートタグとは WPが事前に定義した関数(要は使い勝手を良くするために用意されている便利なモノ)です。

     投稿タグの例
       the_title() ・・・現在のページのタイトル
       the_author()・・・投稿記事の作成者名
     カテゴリータグの例
       the_category()・・・現在の記事が属するカテゴリー
       the_tags()・・・現在の記事に付けられたタグ

     種々のテンプレートタグについては使用手引書等を参考にしてください。使い始めると、徐々に必要なテンプレートタグが絞り込まれてきます、これらを使って自由にWPの記事の内容が操作できるようになります。

    4.最終処理

     the_post() を使った際には、最後に必ずwp_reset_postdata() を実行する。テンプレートタグが現在の投稿を再び使える状況に戻す処理として必要です。

    	wp_reset_postdata();	
  • WP関数を外部から使う

    投稿記事を外部から扱う準備をする

    1.WPの基本構造

     WPプログラムはphp言語で出来ており、プログラムソースが公開されている。誰でも自由にプログラムの内容を見ることでき、必要な情報は再利用できる。

     WPで最初に動くのはwordpressデイレクトリ(インストール時の省略値)の直下にある「index.php」プログラムである。下記に「index.php」の内容を記載する。

    /** Loads the WordPress Environment and Template */
    require __DIR__ . '/wp-blog-header.php';

    2.WPの基本的な動作内容

     「index.php」は「wp-blog-header.php」を自分のプログラムの中に展開しているだけ。「index.php」に起動が掛かって動き出せば、「wp-blog-header.php」にも順序よく制御が渡ってくる。下記に「wp-blog-header.php」の内容を記載する。

    	// Load the WordPress library.
    	require_once __DIR__ . '/wp-load.php';
    
    	// Set up the WordPress query.
    	wp();

    3.「wp-load.php」の登場

     「wp-blog-header.php」も同じように「wp-load.php」を自分のプログラムの中に展開しているだけ。そして「wp-load.php」の内容は下記の通りです(動作条件をチエックする処理が数多く組み込まれているので一部省略します)。

    	/** The config file resides in ABSPATH */
    	require_once ABSPATH . 'wp-config.php';
    	require_once ABSPATH . WPINC . '/load.php';
    	require_once ABSPATH . WPINC . '/functions.php';

     「wp-load.php」の処理内容は「wp-config.php」、「load.php」、「functions.php」などを順番に展開することがメインとなっている。こうして「wp-load.php」が必要な準備処理の元締めとなっている。この後は各WP関数の定義ファイルやクラスファイルを順次読み込んでいく処理が連続して行われる。

    4.WP関数を使うには

     外部からWP関数を使うには「wp-load.php」を自分のプログラム内で展開する。これによりWPの本体と同じようにWPの投稿記事が扱えることになる。

    include_once "●●●●/wordpress/wp-load.php"; 

     「include_once」を使って、1回だけの呼び出しを指定する。これは「wp-load.php」が他のプログラムと同時に呼び出される(2重呼び出し)を防止するため。

  • カスタマイズの種類

    手法や難易度ではなく影響範囲で区分けする

    1.Aタイプ

     周りへの影響が無く、独自にカスタマイズできます。既に用意されたWP関数を使って、WPの外部から投稿記事群(データベース)にアクセスし読み取った投稿記事データを見易く・分かり易く・並べ替えたりと加工して表示します。

     AタイプのカスタマイズはWP外部からのアクセスですから、全くWP本体の仕組みや規則に縛られることなく自由にデータを取り扱えます。

    2.Bタイプ

     提供されている記事の投稿を取り扱う仕組みを「親テーマ」と称し、「親テーマ」に対して個別に修正する仕組みを「子テーマ」と称し、「子テーマ」に限ってカスタマイズを施します。

     「親テーマ」から離れた場所でのカスタマイズですからある程度の独立性は保たれますが、完全に無縁という訳にわ行きません。Bタイプのカスタマイズをするには周りの環境(バージョンアップ等)に注意を払う必要があります。

    3.Cタイプ

     WP本体のプログラムソースを直接修正してカスタマイズします。細かで好みに合ったカスタマイズが可能になりますが、影響範囲の確認等が必要となり汎用性が乏しくなります。

     WPがバージョンアップすると、カスタマイズした箇所が元に戻ります。慎重に調査をした上で、同じカスタマイズを施すか諦めるかの選択が必要になります。Cタイプのカスタマイズをするには慎重な対応が必要になります。

    4.タイプ別カスタマイズの模式図

        

  • Google Colabの利用

    優れた開発環境を利用する

    Googleが所有する高性能GPU(Graphics Processing Unit)サーバーを利用して、3Dグラフィックスなどの画像描写を行う

    1.Googleアカウントを用意する

     開発専用のアカウントを1個、用意する。

    2.GoogleColabを利用する

     https://colab.research.google.com/ にアクセスする。一般的なcolabへの入口なので、続けて上記アカウントでログインする。これで利用開始となる。

     続けて、「ノートブックを新規作成」をクリックし、ノートブック画面を開く。後はプログラムコードを入力し動かしていく。
     

    Colab画面
    ログイン後
    ノートブック作成

    3.GPUの利用設定

     GPU(Graphics Processing Unit)については、最初利用できない設定なので利用できるように設定変更しておく。
     ログイン後に「ランタイム」→「ランタイムのタイプ変更」を選択し、アクセラレータを「GPU」にセットする。

    Colab画面
    ログイン後
    GPUセット

    4.お薦めポイント

     「GoogleColab」を使うに当たっては、何もインストールする必要はありません。Googleにログインすれば直ぐにPythonが使えます、それも初心者から上級者まで何も制限なく可能です。この点がお薦めです。

     だがPythonを今から始めようとする方にはお薦めできません。それは「GoogleColab」を使いこなすには相当な時間を費やす必要があります。Pythonの習得と「GoogleColab」の習得を並行して行うことは無理だと思います。Pythonの習得を優先させてください。

    5.使用上の注意

     最後に「GoogleColab」を使っている際に注意する事
       (1)90分の制限があります
         90分以内に1回はアクセスしないと、セッションが切られます。
       (2)12時間の制限があります
         使い始めて12時間で、セッションが切られます。

     いずれもサーバーへの無駄な接続を防ぐための処置です、頻繁に「GoogleDrive」にセーブしておけば安心です。

  • Ubuntu更新後に行うこと

    環境がVersionUp等により変わった場合の対応方法

    1.ソフトウェアのアップデート

     ソフトウェアの最新状態を確認する。
      「ソフトウェアの更新」といったアイコンがランチャーに載っているのでクリックして起動を掛ける。

    「ソフトウェアの更新」アイコン

     先ず更新対象のソフト一覧を把握し、対象ソフトの存在を確認する。次に更新処理の実行を指示すると、更新処理の途中で確認のためにyes/noの回答を求められる。回答は省くことができる。

    sudo apt update
    sudo apt upgrade -y

     パスワード入力が求められ入力しても入力内容が表示されることはない。パスワード保護のため入力内容は表示されない様になっているが、間違いなく処理されるので心配ない。

    2.日本語入力の準備

    言語サポートを設定する。
     画面左上の「アクティビティ」をクリックする。
     入力フィールドに「lang」と入力する。
     「言語サポート」のアイコンが表示されるのでEnterを押すかマウスでクリックする。

    言語サポートのインストール。
     初回なので「・・・完全にはインストールされていません」と表示されるので「インストール」に進む。2回目以降は表示されない。
     日本語を最上位にして「システム全体に適用」するをクリックする。
     「キーボード入力に・・・」の欄には「IBus」を選択して指定する。
       ※IBus(Intelligent Input Bus)とは、キーボード入力の内容をPCに伝える経路(方法)を意味する。

    先ずこれだけでUbuntuの使用を始めることができる。ここでシステムを再起動する。

    3.日本語入力システム(Mozc)設定

     「設定」といったアイコンがランチャーに載っているのでクリックして起動を掛ける。

    「設定」アイコン

     左端のメニューから「地域と言語」を選びクリックする。「入力ソース」の欄に、初回であれば「English(US)」と表示されているのを確認する。
     「+」をクリックし「入力ソースの追加」画面が表示されるので、その中から「日本語(Mozc)」を選択し、「追加」をクリックして入力ソースとして新しく追加登録する。
       ※Mozc(モズク)とは日本語入力システムを意味する。

    「地域と言語」の画面

     「入力ソース」の追加が終わったら、「日本語(Mozc)」を先頭に位置付けておく。

    4.入力方法の切替え

     画面上端(インジケーターアプレット)の三角(▼)表示をクリックすると登録されている日本語入力システムが表示されます、使用したい日本語入力システムが選択できます。
     「日本語(Mozc)」を選んだ時には、「入力モード(あ)」と「ツール」の項目が出力表示されます。ここからはお好みで日本語入力を使用してください。
     「 スーパーキー (Windows キー)」 +「Space」の同時押しをすることで、全角(平仮名) と半角英数字を切り換えることができます。