ITWorks/seventies/ トピック:情報技術
17-09-26 PHP7を使う
PHPの最新版 PHP7は、バージョン7.0が2015年12月、バージョン7.1が1年後の2016年12月1日にリリースされている。
PHP7の特徴は、言語仕様の大きな変更なく、

(1) 前バージョンのPHP 5.6と比べて25%から70%の性能改善が図られている。
(2) 諸々の改善。引数や関数の戻り値の型指定の強化、ereg関数の削除。
(3) mysqlエクステンションの削除。つまり、mysql_から始まる関数群が無効となる。

特徴(1) この性能改善には興味を持った。これだけ出れば無理してHHVMを使うこともないかと思った。

  作業場で、PHPアプリケーションの開発に使っているRaspberryPiにも、PHP7が公開されているという記事を
  みて  インストールした。
  また、lilipopサーバーでも、PHP7が使えることが分かったの、php7の実行環境が確保できた。
  
  この突然の性能改善どうのようにして実現したかが謎であったが、後でPHPコンファレンス2015での
  PHPの創始者 Rasmus Lerdorfさんの行ったプレゼンテーションの中のPHP7のアキテクチャーの説明で納得した。

特徴(2) 諸々の改善。
  多くの改善があるようであるが、一見すると、ereg関数の削除がちょっと気になるくらいで、
  あまり自分の書いたPHPプログラムや、これから書くPHPプログラムには影響が無いと見えた。
  
特徴(3) mysqlエクステンションの削除。
  これは、自分がいままで書いたPHPプログラムには問題があった。
  
  自分のPHPプログラミングの流儀は、一つのアプリケーションに、一つのディレクトリー、一つのMySQLのdatabase
  を割当てることです。
  また、プログラムの開発環境、デモ環境、実行環境で、プログラムの変更を少なくするために、
  mysql_connect関数の簡単なラッパーを作り、この中に引数であるサーバー名、ユーザー名、パスワードを記述して、
  common.phpの中に置いていた。ディレクトリー内の各PHPプログラム(script)は include するようにしていた。
  また、common.phpの中には、mysql_query関数、mysql_close関数のラッパーも置いていた。
  そこで、このcommon.phpの中にあるmysql関数の記述部分をmysqli関数で書き換えて、テストしてみた。
  本文でmysql_fetch_array関数を使っているところが残っていたので、common.phpの中にmysql_fetch_array関数の
  ラッパーを追加。
  これで、いままでに書いたphpプログラムはすべて無事実行ができた。
  
** 参考 ***************************************************************************

 function My_Connect() {		// *データベース接続
      global $Db,$database,$host,$user,$pw;
      $MyDb = new mysqli($host,$user,$pw",$database);
      if (!$MyDb):
        echo "D01,** DataBase ConnectionError";
        exit;
      endif;
 }
 
 function My_Exec($MyDb,$MySql) {		// * データベースSQL文の実行
     global $MyDb,$cid,$mydatabase;
     $ret = $MyDb->query($MySql);      //   or die ("* Error13:".mysql_error()) ;
      if (!$ret):
        echo "D02,** DataBase Errer. $MySql is not executed";
	    echo $MySql;		exit;
      endif;
      return $ret;
 }
 
 function My_Close($MyDb) {
      global $mydatabase,$MyDb;
      mysqli_Close(); // * データベースの切断
 }

 function mysql_fetch_array($ret) {
     $ar = $ret->fetch_array();
     return $ar;
 }
 
***********************************************************************************

結論:自分の場合、各PHPアプリケーション・プログラムは、共有するcommon.phpを修正するだけで、

   PHP7への移行ができた。

17-05-03 シニアプログラミングネットワーク#1 
 シニアプログラミングネットワーク#1というイベントが、東京・渋谷で、2017-04-29にあり、
行ってきました。


参加者は130名と盛会でした。 コーディネイターは、宮城・塩釜市の小泉勝志郎さん。バックアップは"Code for Japan"。 スピーカーは、 1.若宮正子さん、82歳。iPhone アプリ hinadan の開発。 2.鈴木富司さん、82歳。スマホの勉強 トミ爺が語る使い方 for iPhone の開発。 3.谷川一男さん、60代。Ichigo Jam を使った猪捕獲装置を開発。 4.陣内一樹さん、30代。福島・浪江町で iPad 利用の普及に尽力。 話のなかで、 若宮正子さんの hinadan は、かわいらしい、のんびりとしたゲームです。こんな発想があるということに気づいた。 開発には、いろいろな人の支援・参加が必要だったということ。 シニアの事情。細かい字や "ドラグやスライド" の操作が苦手(指が乾いていて)。 懇親会で、カードサイズのワンボードコンピューター Ichigo Jam の開発者の松田優一さんのお話を聞き、また 彼の Ichigo Jam の実演を見て、得ることが多かった。また、彼が小中学生のコンピューター教育に熱心なことに感心と同感。

14-08-07 ホームページ改造
 ホームページを改造しました。
いままでは、WordPressを使ってホームページを公開していましたが、
自作のホームページ公開プログラムを使うことにしました。

WordPressは、世界で普及しているホームページ管理プログラム(CMS:content management system)。
私は、2010年よりこれを使い、仕事寄りのサイトと、"Seventies"という私的なサイトを作り、
ホームページを公開してきました。

1.WordPressの特徴

(1) 文書や、画像等の「コンテンツ」をデータベースに登録し、表示する時に動的にコンテンツを作る。
  なお、「パーマリンク」といって、サーバーのmod_rewrite 機能を使い、動的コンテンツを
  見かけ上のURLを持った静的にすることが出来る。

(2) 画面の構成を作る時、「theme」というテンプレートを使う。利用できる「theme」はいろいろあり
  自分たちあった画面を作ることが出来る。また、自分で使う「theme」を変更することも出来る。

(3) ウェブブラウザからの投稿、下書き・公開のプロセスやユーザー毎の権限の設定で、組織的・体系的に
  コンテンツを作成・公開・維持することができる。

(4) 一つのサーバーで複数ユーザー(サイト)の運用ができる。

(5) 世界中の開発された様々の機能の「PlugIn」が利用できる。これを入れて機能拡張ができる。

2.事件発生

今年(2014年)6月に、私が関係しているWordPressサイトに不正侵入されるという事件があった。
この件での侵入の手口は分からなかったが、
アクセス・ログを見ると、侵入の直前にSQL/PHPインジェクションをねらったアクセスが数百件があった。
WordPressサイトは世界中に沢山あるので、これらサイトがさまざまな手段で攻撃されていることが分かった。

3.考えたこと

とりあえず、ホームページを表示するシンプルなプログラムを作る。

4.プログラム作成方針

(1) 画面の構成は、現在の画面を参考に。文書や、画像の「コンテンツ」を表示する機能に絞る。

(2) 現在のWordPressのデータベースをそのまま使う。
   これにより、新プログラムへの移行を簡単にし、登録は現在のWordPressのプログラムをそのまま使う。

(3) 入力項目のサニタイズを行い、リモートファイルの取り込みを回避。

なお、今後、不備な点を修正していきたいと考えています。

12-01-27 iPhoneアプリ作成
 1.iPhoneアプリの作成方法

iPhoneアプリケーション・プログラムの作成の方法には、2つの方法があります。

それは、
  (1) Macを使い、Objective-Cでネイティブアプリケーションとして書く。
  (2) HTMLとCSS、JavaScriptを使い、Webアプリケーションとして書く。

 ネイティブアプリケーションを作るには、MacとXcodeという開発環境が必要です。
出来上がったプログラムは、iPhone固有のiOSのもとで動くので、AndroidOSのもとでは
動きません。
 Webアプリケーションでは、原理的にはWebページを書くのと同じです。
 出来上がったプログラムは、Androidスマートフォンでも動かすことができます。

 今回は、Webアプリケーションとして書く方法をとりました。

2.Webアプリの場合

 Webアプリケーションを書く場合には、

  (1) ユーザーの画面タッチに応じた動作をJavaScriptを使い、指定する。
  (2) 画面上に見栄えよい文字、ボックス、ボタンをCSS(Cascading Style Sheet)を
    使い、配置する。
  (3) プログラムをインターネット上のWebサイトに置く。
    つまり、Webサイトが必要となります。
  (4) また、Webサイトで、iPhoneからのデータを受け取ったり、
    iPhoneにデータを返すことが出来る。

3.今回作成のプログラム

 今回は、iPhoneのGPSを使い、自分の現在位置をサーバーに送ることと、
 後でサーバーに送られた現在位置を検索することを行えるようにしました。


 このため、プログラムに装備した機能は、     (1) 現在の自分の位置情報を取得   (2) 現在位置の地図を表示   (3) 地名を取得   (4) Webサーバーに位置情報を送る   (5) Webサーバーでは、送られたる位置情報をデータベースに記録する   (6) Webサーバーは特定の相手に位置情報が来たことをメールで通知   (7) Webサーバーは、検索に応じて記録されている位置情報を表示 4.感想、その他、   (1) プログラムを書いているとき、JavaScriptとサーバーのロジックの       実行タイミングの違いに頭を切り替えるのに多少手間どった。   (2) 位置情報の扱いは、HTML5 Geolocation API、Google Maps APIを使い、       簡単にできた。   (3) CSSでは、Diego Martin LafuenteさんのUiULKitをフレームワークに使った。   (4) 利用した参考書:   佐藤信正、はじめて作る人のためのiPhoneウエブ・アプリケーションforWindows   (5) MacBookAirにGPS機能が付いていることを発見した。

10-02-27 WordCampFukuoka 2010
 福岡市で初めての WordCamp「WordCamp Fukuoka 2010」が 2010/02/27 に開催されました。
WordCampは、WordPressをきっかけにウェブに関するさまざまな人々が出会うイベントです。
WordPress (ワードプレス) は、現在ユーザー数が急上昇のオープンソースのブログ/CMS
プラットフォームです。phpスクリプットで書かれたプログラムで、GPLライセンスで
配布されます。
WordPressは、個人のブログサイトを立ち上げるだけでなく、企業サイト等を構築・再構築に
有用なツールです。
この時代の動き感じることの出来るイベントでした。



09-10-29 eeePCに Ubuntu9.4
 もうすぐ、次のバージョン9.10が出てくると思いますが、
現在入手できるUbuntuの最新版は、今年の4月に出たUbuntu9.4です。
eeePCへUbuntu9.4は、大きなトラブルなく出来ました。
前のバージョンであるUbuntu8.10では、無線LANの前に、有線LANが接続できず、
インターネットからのパッケージするたびに、虚しい待ち時間があり、
インストールに大変時間がかかりました。

Ubuntu9.4DeskTop

8GBのSDHCカードにインストール。

Ubuntu9.4Server

16GBのSDHCカードにインストール。
MySql、PHP、Perl、Rubyの動く環境が出来上がった。
現在、インターネットからのアクセスを試行錯誤中。



01-06-07 WebEDI
 WebEDI は、インターネットで行う小売業とその取引先で行う企業間データ交換(EDI)の仕組みです。
現在、多くの小売業は、新しい情報技術を取り入れ、お客様のニーズに応えるための様々なシステム化を
行っています。

しかし、
EOS発注の中に残るFax発注、電話発注、手書き伝票による納品の問題。
市場からの鮮度の高い商品のタイムリーな導入、流行商品の数量確保と店舗の配分の問題。
店舗へ配布される膨大な商品情報文書。
しかも、それの活用・消化の不十分。

これらの問題の解決には、問題を直視することと、怯まず、発想を変えた新しいアプロ-チが必要となります。
WebEDI は、売場を活性化し、無駄なコストを省く新しいアプロ-チです。


98-04-17 最初に出会ったPHP/MySQL
このPHP文は、最初に出会ったものです。1998年のことです。
末安泰三さんの「Linuxで作るSOHOサーバー」(日経BP社、1998年4月)の中でした。
早速、藤沢市の広川類さんのホームページから、広川さんの訳した PHP/FI2.0 マニュアルを印刷しました。

<!-- **index.php first.php ********************************************************************* -->
<html>
<body>
<center>
<form action="index.php" method=POST>
    <P>DATABASE NAME  <INPUT type="text" name="database" value="<?php echo $database ?>"></P>
    <P>SQL QUERY      <INPUT type="text" name="sql"      value="<?php echo $sql ?>"></P>
    <INPUT type="submit" name="EXEC">
</form>
<?php
        if($database=="") {
            $database="http_auth"; }
        if($sql=="") {
           $sql="SELECT * FROM mysq_auth"; }
        mysql_connect ("localhost", "username", "password");
        $result = mysql($database,$sql);
        $numrows = mysql_numrows($result);
        $numfields = mysql_numfields($result);
        echo "<table border><tr>";
        $i=0;
        while($i < $numfields):
            echo "<TH>";
            echo mysql_fieldname($result, $i);
            echo "</TH>";
            $i++;
       endwhile;
       echo "</TR>";
       $i=0;
       while($i < $numrows):
           $j=0;
           while($j < $numrows):
               echo "<TD>";
               $fieldname = mysql_fieldname($result, $j);
               echo mysql_result($result, $i,$fieldname);
               echo "</TD>";
               $j++;
           endwhile;
           $i++;
           echo "</TR>";
       endwhile;
       echo "</table>";
?>
</center>
</body>
</html>
<!-- **index.php first.php ********************************************************************* -->

このPHP文は、もともとは古いバージョンなので、スクリプトの拡張子は phtml でした。
また、ブラウザの都合で<>演算子は<>で表示しています。

copyright (c) itworks.co.jp All right reserved.