なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

職業訓練の授業46日目~PHPの基本 正規表現、クッキー、セッション

f:id:nazuna_0124:20170304205638p:plain

四当五落って言葉ご存知でしょうか。


志望校に受験には4時間睡眠なら受かる5時間も寝ると落ちちゃうという言葉。


普通に考えると4でも5でも長く続けば死んじゃいます


元の意味はともあれ、1時間の差が大きいよと捉えたいです。

1日1時間☓30日は30時間。これだけあったら、簡単なのはなんか作れます。


最初ほど手を動かすのって大事ですよね!

出来はともかく完成までなんとかしよう!


などと自分を励ましつつ、こんばんわ。


本日の授業1は正規表現


SQLと並んでプログラムのついでに出てくる法則的ななにか。


エディタで慣れてる人なんかは有利なのかもしれません。


忘れた頃にやってきた悩ませてくるので、どんなときに使うかだけ覚えておけばいいんじゃないでしょうか。


URLを表す正規表現がとても長いということだけ覚えました。


続いてはセッションとクッキーです。

なぜこいつらと、正規表現が同じ日なのか。


簡単に聞いただけで使うと危険な代表格な気がします。


本日のこの3つはこの部分だけで別に補足があるとうれしいですねー。

プログラムやる前に学んでおいても楽になる部分でもありますな!

職業訓練の授業45日目~続PHPの基本、カレンダー作り~

f:id:nazuna_0124:20170303232129p:plain

ちょっと前に緑のたぬきって言いながら、赤いきつねとタイピングできないって話題がありました。

htmlでハイトって読みながらhightはうてません!

(もちろんヘイト読みです)


でもある日気が付きましたハイティー(high + t)なら打てる!むしろ速い!


少し話を戻して、何が言いたいかといいますとPHPの関数でstrtotimeがあります。

文字列の日付をタイムスタンプで返す・・・だと意味わかんなくて、dateが扱える形式になおしてくれます。


最初は「すとるぅとたいむ???」などと読んでて全く覚えられませんでした。


よーく見たら str to timeなのですよね、これ… そしたらあっさり!

Google翻訳で「string to time」調べると「文字列と時間」だそーです)


file_get_contentsみたいにこの手のやつは「_」区切りが多いのになんででしょーね。



というわけで、本日の授業です。

表題の通りカレンダー作りは終わってます。


カレンダー前にアンケートフォームのPHP混ぜたとこまで作るのもありました。


でもデータ保存できないので今のとこ意味なさげ。


PHP授業開始から18時間かかって使えるものが作れてない恐怖。

気長にがんばりましょう!

PHP初心者が開発環境を考えてみた

f:id:nazuna_0124:20170309204724p:plain

むがー! いまいち何で作るか決まらなくて落ち着きません。


というわけで、各環境の一瞬触ってみただけの感想です。

くれぐれも参考にしちゃだめです


慣れたらきっと印象変わると思います

PHP動かしてくれるもの

XAMPP

いわずとしれた。たぶんこれが一番楽だと思います

さっさとPHP動かしたいのよ!ってことなら特に。


eclipseにくっついてくる場合もあります。

Vagrant

簡単という触れ込みですが、実はわかりにくくてめんどくさい。

ドットインストールさんはこちらで説明されてます。


たぶん、まだ私がこれの便利さを理解してないんだとおもうの。

Vmware + Linux

位置から作れるのはメリットなのかデメリットなのか。

とにかく動かし初めまで時間がかかります。

動いてしまえば疑似本番環境みたいになるのでそこはよさげ。

レンタルサーバー

こうなったらもう借りちゃえ

お金がかかる、もしくは容量などに制約がある、申込みから解説まで時間かかるときがある。


すぐやりたいならちょっと厳しいのかも。



入力する方法

エディタ(サクラエディタterapad

ぱっと見がかっこ悪い

割りと致命的。

Atom

最初からいろいろできる。見た目もスマート。

重くて遅い

テキストエディタIDEの中間と考えたほうがいいんじゃないかしら。

エディタにしては重い

IDEとしては不親切

という感じ。全く逆に感じる人も多いのでは。


画面左側にフォルダ構成でるのが好き。


PHP補完入れてみたら必須じゃない引数まで突っ込まれる仕様でした。 (設定あるのかな)

Sublime

プラグイン入れるのがよくわからず挫折。

ここからIDE

eclipse

容量が大きい。プラグインの検索やインストールにやたら時間がかかる。
フォントがきたない、タブキー押すと入る「>」が邪魔。


javascriptの補完がよくわかんない。


内部ブラウザですぐ確認できるのはうれしー。


フォントは等幅メイリオを作ってくれた方がいらっしゃるらしく、これで解決!

NetBeans

ダーク系が色がいまいち。フォントが汚い。

厄介なのがアンチエイリアスがどうとか、日本語と英字でフォントを変える設定とか

いっぱい見つかってしまうこと。


eclipseと同じく等幅メイリオで解決した気もします。


atom themeが落ちてましたがインポートがわからず挫折…


F6キーですぐ実行になるのは素敵。

AptanaSudio

いきなりエラーが表示されてインスールできない


解決したと思ったら


日本語が入力できない


というところで終了。


まとめ

学校ではAtom+xampp 、おうちではeclipse+xamppとなりました!


NetBeansさんはもうちょっと見てみる予定。

AccessVBAのきっかけ~ExcelのBOOK間転記はテキスト挟むとたまに楽~

f:id:nazuna_0124:20170312082946p:plain

VBA書かなくなって随分立つけれどまだ覚えてるかなぁ。

やり始めたきっかけを思い出すのはなかなか楽しいです。


akashi-keirin.hatenablog.com

そんなところでお見かけしたこちらの記事。


あるExcelから他のブックに移動したいことはよくあります。

んで

よーく考えると大抵の場合でデータベース化したいってことがほとんどなんですよね。


Excelだといちいちbook開くの面倒。別に書き込み先は外でもいいじゃん。

ということで、Access>今のmysqlと流れていくわけです。


やりたいことを考えるとテキストを間に挟めるとむしろ楽なことがあるというお話。



しっかり真似をさせて頂いて。入力画面をこんなかんじ

Excelのバージョンは気にしちゃだめです f:id:nazuna_0124:20170312122941p:plain


つづいてソース

Sub writeTxt()
    Dim FSO As New Scripting.FileSystemObject
    Dim col As New Collection
    Dim PATH As String
    Dim SH As Worksheet
    
    PATH = ThisWorkbook.PATH & "\db.txt"
    Set SH = ThisWorkbook.Worksheets("Sheet1")
    
    col.Add "C3"
    col.Add "C5"
    col.Add "C7"
    col.Add "F3"
    col.Add "F5"
    col.Add "F7"
    
    Dim str As String
    
    
    For i = 1 To col.Count
        
        str = str & SH.Range(col(i)).Value & ","
        
    Next
    
    str = Left(str, Len(str) - 1) & vbCrLf
    
    FSO.OpenTextFile(PATH, ForAppending, True).Write (str)
End Sub


カンマ区切りの文字列にしちゃってテキストファイルに追加書き込みしちゃうのです。


※注意 該当テキストファイルを「メモ帳」で開きっぱなしのときは問題ないですが、エディタとかだとロックかかります

作ったコードをF5キーで連打すると

f:id:nazuna_0124:20170312123538p:plain

ウィンドウズのバージョンは気にしちゃだめですってば。


あとは適当に読み取りたい側のBookにテキストファイル読み取るものを作成。

Sub readTxt()
    Dim FSO As New Scripting.FileSystemObject
    Dim col As New Collection
    Dim PATH As String
    Dim SH As Worksheet
    
    
    PATH = ThisWorkbook.PATH & "\db.txt"
    Set SH = ThisWorkbook.Worksheets("Sheet2")
    
    
    Dim str As String
    
    str = FSO.OpenTextFile(PATH, ForReading).ReadAll
    
    
    Dim i As Long
    Dim k As Long
 

    Dim splRow
    Dim tageRow As Long
    
    
    tageRow = 2
    
    splRow = Split(str, vbCrLf)
    
    
    For i = 0 To UBound(splRow) - 1
        For k = 0 To UBound(Split(splRow(i), ","))
            SH.Cells(tageRow, k + 1).Value = Split(splRow(i), ",")(k)
        
        Next k
        tageRow = tageRow + 1
    Next
End Sub[f:id:nazuna_0124:20170312124329p:plain]


ふつうに読み取り結果。

f:id:nazuna_0124:20170312124329p:plain


テキストファイルへの読み書きは不思議な速さなので

覚えておくとたまに幸せになれますというお話でした!

PHPの基礎~一言掲示板ちっくななにか~

f:id:nazuna_0124:20170312082946p:plain

おはようございます!

昨日作るだけ作って更新しなかったので、さっそく更新。


プログラムの基本3構造+POSTだけで何か作れないか考えましたが、

やっぱりそれだとサーバーにある意味がありません


というわけで、テキストファイルに出力して読み込むタイプの処理です。


チャットや掲示板、CMSの原石みたいなかんじです。


テキストファイル書き込みテスト

画面はこんなかんじ。

f:id:nazuna_0124:20170312083534p:plain

ソースはこちら

<?php
    $inputName = '';

define("TXT_PATH","log.txt");

    //postがあったら書き込みする。
    if(!empty($_POST)){
        //文章作成
        $str[] = date('Ymd H:i:s');
        //$str[] = $_SERVER['REMOTE_ADDR']; //IPを表示しておきたいとき
        $str[] = $_POST['name'];
        $str[] = $_POST['text'];
        $str[] = "\r\n";

        file_put_contents(TXT_PATH,implode(",",$str),FILE_APPEND);

        //名前維持のために変数へ格納
        $inputName = $_POST['name'];
    }



    $getTxt = htmlspecialchars(file_get_contents(TXT_PATH),ENT_COMPAT);
    $getTxt = str_replace("\r\n","<br>",$getTxt);

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>txt test</title>


</head>
<body>

    <form name="frm" action="" method="POST">
    名前
    <input name ="name" type="text" size="30" maxlength="255" value="<?php echo $inputName ?>">
    <p>
    本文
    <input name="text" type="text" size= "" maxlength="255">
    </p>

    <p>
    <input type="submit" value="送信">
    </p>

    </form>

    <br>

    <?php echo $getTxt;?>


    <script>
   window.onload= function(){
       if(document.frm.name.value == ''){
           document.frm.name.focus();
       }else{
           document.frm.text.focus();
       }
   }

</script>
    </body>
</html>

ファイルを書き込む処理として file_put_contents 使ってます。

ロックがどうなってるのかさっぱりわかりません

同時書き込みとかどうなるんでしょーね…


初めて使う時は名前にフォーカスがあたって、

本文入力後は本文側にフォーカスあたるようになってます


この手の使いやすさはとっても大事。チャットでは基本といえば基本ですけれど。


$text =['日付','名前','本文']

こーゆう配列を 「日付,名前,本文,」という風に

文字列に置き換えてくれるのがimplodeです。

他の言語だとjoinかな? 


PHPにもありますが非推奨なので注意


これが出来るといろいろできます。


テキストファイルで処理してるとこをデータベースにすればさらに!

PHPが好きになりました~PHP開発者のインタビューを見て

本日の授業はおやすみ。

めずらしく全くやる気がでません。


お休みもたまにはいいですよね(・∀・)


だらだらしてるところでPHPのなんとなく腑に落ちない部分を求めて

開発者インタビューをみてみました。

Rasmus Lerdorf氏インタビュー


すっごく平たく言うと

  • PHPは必要だから作った
  • 重要なのはどの製品が必要とされているか
  • 学術的に純粋であることと実用であることは関係がない。

いい加減な部分なのはこーゆう思想からも来てるのでしょねー。


なんというのでしょう。わたしは自分の作ったものの雑さを自分で責めてた口です。


VBAで業務改善した人はよくご存知かと思いますが、ほんとすごく喜ばれるんです。


でも、どれだけ感謝されても「こんなの使わせてごめんね」という思いはなかなか消えませんでした。

(今は吹っ切れてます)


その雑に作っちゃだめ、いい加減にやっちゃだめというマイルールを

破っているものを見せられるからPHPいやだったんだなーと再認識。


嫌いなものの原因は大抵自分にありますよね。

だから何が嫌いかで語るのが好きなのです。

職業訓練の授業44日目~PHPの初歩~

f:id:nazuna_0124:20170310221050p:plain

内容:連想配列、$_GET

10日くらい前に戻ってきたSQLペーパーテストですが

無事100点でした!


いや~ 簡単だったので満点じゃなかったらどうしようかと

逆に変なプレッシャーがかかってました…


78点のできのもので納期は2割引き

それがわたしのクオリティ。←満点は最初から諦める。


尚、納期が倍になっても点数は82点くらいにしか上がりません!



というわけで、わたしの最寄りのスクリプト言語PHPさん2日目です。


本日もわたしのノートより抜粋(テキストファイル

printf覚えれ

文字列の表現方法。ちょっと特殊だけれどC言語にはあるみたい。

var_dumpとprint_r

変数の中身確認。

IDE使わないならこれで確認するのが基本

連想配列が重要

PHPは何かあったらすぐ連想配列で返ってきます

曖昧にすると死んじゃうのできっちり覚えること!

変数の存在確認、中身確認

isset と empty。

$_GETへの値確認

コードの変数いじってどうこうするより

localhost/index.html?t=2017-03

こんなかんじでブラウザを直接いじっちゃうほうが楽です。


一通り知識を放り込んだところでフォーム作成。ここで


htmlspecialcharsさんきたー


これの引数ですがENE_QUOTESが基本かと思います。

| で区切って論理和を使うこともあるとかなんとか…

普通にちょっと何言ってるかわかりませんでした。


計算機系のフォーム作成

割り勘計算機を作成しました。

ここで覚えたいこと

  • 0で割るとエラーでる
  • $_GETの中身を確認しよう
  • input type=“number” で数値入力。でも過信注意。
  • actionで別ページに飛ばすほうが楽。同ページ表示はちょっと後。

制御文

お約束のif、for、while、switch


2日目で基本的なところはかなり進みました!

この時点で何か作れそーで・・・ちょっとむつかしい?

何か考えてみます。