手から出たゴミ

食って、寝て、糞をする合間で作り出されたゴミ

Python基礎の基礎

Anacondaのインストール

f:id:techimaharu:20171016153527p:plainf:id:techimaharu:20171016153533p:plainf:id:techimaharu:20171016153536p:plainf:id:techimaharu:20171016153550p:plainf:id:techimaharu:20171016153553p:plainf:id:techimaharu:20171016153557p:plain

  • 動作確認

Windowsは、コマンドプロンプトを起動後

python --version

Python 3.6.2 :: Anaconda,Inc (結果)
python

>>> print("Hello")
Hello (Helloが出れば動作確認終わり)
>>> exit()

f:id:techimaharu:20171016153601p:plain
print("Hello")の実行結果

基本情報午前問題 単語集

説明できなかった単語

SGML

  • 文章を分割することによって、文章内の要素に対してアクセス、参照を可能にするルール。HTML、XMLの元になったマークアップ言語の一つ

XML

  • 自由に設定可能なタグを用いることによって、文書内の情報の意味と内容を定義することができる言語

DRAM SRAM ROM

参考

スプーリング

  • プリンタなど低速な出力装置への出力データをバッファやストレージなどに一時的に保存しておくこと

BSDライセンス コピーレフト

  • BSDライセンス

    • 著作権の表示と免責条項を明記すれば、複製や改変、再配布が可能。比較的ゆるい
  • コピーレフト

    • 二次著作物(派生物)に対しても、オリジナルと同じ配布条件をつける

B+木インデックス ハッシュインデックス

  • B+木インデックス

    • 二分木探索において、1つノードがm個 (m>=2) の子ノードを持つことで log n / log m 回 (n 木の高さ)の計算量を実現したもの
  • ハッシュインデックス

    • テーブルに値を登録する際、ハッシュ関数をかけて格納位置を算出し、その格納位置に値を格納する

計算量の説明 参考

データベースダンプ

  • データベースの内容をファイルに書き出すこと

ウェルノウンポート番号

  • サービスによってポートが紐づけられている番号。ポート0~1023

ファンクションポイント法

  • 「入力」、「出力」、「記憶」に注目する見積方法の一つ。 ユーザの要件定義が決まり、必要な機能が把握できた段階でシステムの規模を概算することができる

感想

マネジメント系とストラテジ系が学生には、イメージしづらい

結果として、理解ではなく暗記で乗り切る試験となっている。

Googleが採用でコード重視を宣言してくれれば、勉強時間を酒にあてることができるのだ! という妄想を抱きながら、数字を淡々と書く単純作業をした

間違いとかあれば、コメント下さい

VSCodeで複数インデントを操作

  • 複数行インデントを挿入

Ctrl + ]

  • 複数行インデントを削除

Ctrl + [

画面が横表示になった

3分で解決

PCでカタカタしていると下のような画面となった

f:id:techimaharu:20171009111316p:plain
横向き画面

少しパニックになったが、[Ctrl] + [Alt] + [↑] で解決した

参考

線形リストで入力した文字列を逆順出力

やったこ

コンパイラ 第1章の演習問題1のプログラムを書いた

  • 問題

入力された文字列を内部でリンクトリストで保持し、逆順で出力

リンクトリストとは

連結リストのこと データ構造において、自身のデータとnextなどによって自分とは異なるデータへアクセスする情報を 持つことによりデータのリンクが可能なリスト。

参考

C言語で実装しろとのことなので、2ヶ月ぶりに書いたコードが下記のものだ

#include <stdio.h>

struct node{
    char item[20];
    struct node *next;
}NODE[10],*pt;


int main(void){
    int i;
    while(scanf("%s",NODE[i].item)!=EOF){
        i++;
    }
    while(i!=0){
        i--;
        NODE[i].next = &NODE[i-1];
        NODE[0].next = NULL;
    }
    pt = &NODE[tmp];
    while(pt!=NULL){
        printf("%s\n",pt->item);
        pt = pt->next;
    }
    return 0;
}

感想

所要時間 1.5h

久しぶり過ぎて、構造体、ポインタなどの使い方を忘れていたので時間がかかった

NODE[10]で数を指定しているため、 mainの中でデータの数を指定できるように改善する必要がある

PHPでバグ修正

INSERTができない

パーフェクトPHP(2016版)の第6章のコードを写していると INSERTができないという非常事態に!

すぐさま、teratailに質問をぶつけた

そこで、var_dump()でエラーのチェックができることを知った

$in = "INSERT INTO `post` (`name`,`comment`,`create_at`) VALUES ('". mysqli_real_escape_string($link , $name) . "','". mysqli_real_escape_string($link , $comment) . "','". date('Y-m-d H:i:s') . "')";
$ret= mysqli_query($link,$in);
var_dump($ret);

上の結果がbool(false)であったため SQL文自体に問題があることがわかった。

printf("Error: %s\n", mysqli_error($link));

// $link = mysqli_connect('localhost', 'root', '');

>>> Error: Unknown column 'create_at' in 'field list'

エラーの内容から、create_atをcreated_atに変更すると DBに値が入力されていることを確認した

感想

デバッグのやり方を学べたのはデカい

重複なしのtableの作成(XMAPP)

やったこと

既に、idがtableに存在していれば 入力を拒否してエラーメッセージを作成する

テーブルのidに主キー設定し、重複なしのtableを作成

XAMPPで主キーの設定

f:id:techimaharu:20170815224509p:plain

XMAPPのSQLをAdminすると遷移する

phpMyAdminで作成したテーブルしたをクリック後

表示 - 構造 - SQL - …

の構造に移動後、上記画像を参考に主キーに変更できる

コードの一部

$sum = $_POST["count"]; // 総単位数
    
$sql = "INSERT INTO    sum_credit (student_id , sum) VALUES    (imaharu , $sum)";
$result = $mysqli->query($sql);
if (!$result) {
echo "try again";
}
$mysqli->close();

終わりに

主キーやユニークキーの設定を勉強する必要がある