初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます

20150411143621

Python 図形描写 健忘録

from PIL import Image, ImageDraw,ImageFont

#描写するオブジェクトを作成
#第一引数から色・キャンパスの大きさ、塗りつぶしの色
drawCanvas = Image.new("RGB",(100,100),(255,255,255))
draw = ImageDraw.Draw(drawCanvas)
draw.rectangle((x軸の始点,y軸の始点),
(x軸の終点,y軸始点の終点),fill=(0,0,0),outline=(0,0,0))

ShellScript インクリメント 健忘録

他の言語だと++が使えますがbashだといつも
どうやるんだけ?っとなるんで健忘録で書いときます。


exprコマンド
ループ中に使用すると下記の$(())やletより
処理がすごく遅いです。

count=1
count=$(expr $count + 1) # => 2

$(())

count=1
count=$((++count))    # => 2
count=$((count++))    # => 2
count=$((count += 1)) # => 3

let

count=1
let ++count    # => 2
let count++    # => 3

Mac launchd 設定方法 健忘録

定期的にシェルを動かしたい際にはOSXでは
launchデーモンに登録する方法があります。

任意のユーザーで動かしたい場合には設定ファイルを下記に作成します。
/Users/ユーザー名/Library/LaunchAgents/

~/Library/LaunchAgents/ ユーザーごと設定できるエージェント
/Library/LaunchAgents/ 管理者用のエージェント
/Library/LaunchDaemons/ システム共通のデーモン(rootがオーナー)


plistファイルの角パラメーターは下記になります。

ジョブ名

<key>Label</key>
<string>任意のジョブ名</string>

実行するファイルの言語と実行ファイルへのパス

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>/Users/cat/script/test.sh</string>
</array>

実行のタイミング(秒指定)

    <key>StartInterval</key>
    <integer>10</integer>

実行時刻の設定

<key>StartCalendarInterval</key>
<dict>
    <key>Hour</key>
    <integer>0</integer>
    <key>Minute</key>
    <integer>0</integer>
</dict>


詳しくは
launchd - Wikipedia

Python Requests・BeautifulSoup 健忘録

スクレイピングで便利なRequests・BeautifulSoupの使い方を忘れないように残しておきます。
事前に足りないモジュールはPython用パッケージ管理システムのpipでインストールします。

スクレイピング

WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことである。

Requests

Python の HTTPモジュール

BeautifulSoup

取得したHTMLをパース(分解)や検索や整形したりすることができるモジュール


下記の流れで最低限のHTMLを取得することが出来ます。

import requests
from bs4 import BeautifulSoup

# アクセスするURL
url = "http://www.google.co.jp"

#RequestsのgetメソッドでwebからHTML取得
r = requests.get(url)

#要素を抽出
soup = BeautifulSoup(r.text, 'lxml')
#1行に1タグの整形されたUnicode文字列に出力
print(soup.prettify() )
#テキストだけ抽出
soup.get_text()
soup.string
soup.div.get_text()

#div要素の文字列を返る
soup.div.string
#全属性を返る 
soup.div.attrs
#親要素が返る
soup.div.parent     

#先頭のdiv要素のHTML抽出
soup.find('div')
#すべてのdiv要素のHTML抽出
soup.find_all('div')

#cssセレクターによる指定
soup.select('div#header > ul > li')   
文字列の操作
>>> '  cat  '.strip()
'cat'


>>> 'cat, dog, bird,'.split(',') 
['cat', ' dog', ' bird', '']

Git Github 健忘録

Gitのリポジトリの管理方法

作業ディレクト

作業中のファイルがあるディレクト

ステージングエリア

git addで追加したファイルがあるディレクト

Gitディレクト

git commitで追加したファイルがあるディレクト

コマンド

レポジトリ作成
$ git init
リポジトリに一時保存追加
$ git add 
リポジトリに追加

-v 変更点を表示してコミット
-a 変更のあったファイルすべて

$ git commit -m “コメント”
リモートリポジトリの情報追加
$ git remote add origin
リモートリポジトリからローカルリポジトリにコピー
$ git clone “リモートリポジトリのURL”
ローカルからリモートにファイルを反映
$ git push origin ブランチ名
リモート内容をローカルリポジトリに反映
$ git pull
ブランチの作成/移動/削除/変更/一覧/
$ git branch [branch_name]  //ブランチの作成
$ git checkout [branch_name]  //ブランチの移動
$ git branch -d [branch_name]  //ブランチの削除
$ git branch -m [branch_name]  //現在のブランチ名の変更
$ git branch // ローカルブランチの一覧
$ git branch -a //リモートとローカルのブランチの一覧
$ git branch -r //リモートブランチの一覧
$ git checkout -b branch_name origin/branch_name //リモートブランチへチェックアウト
編集をマージ

master以外のブランチで編集した箇所をmasterに反映させる

$ git checkout [branch_name]  //ブランチに移動
$ git commit -a -m "コメント"  //変更ファイルをコミット

$ git checkout master  //masterに移動
$ git merge [branch_name]  //差分をマージ
$ git push origin master  //ファイルの更新

用語

Fork

他のリポジトリのを自分のアカウント下にコピーすること

Pull Request

リモートレポジトリを更新した際に、他にもリポジトリ編集者がいる場合に、その編集内容を受け取って(pull)くださいというリクエストを出すこと

プルリクエストを送るまでの手順概要

Forkを使ったプロジェクトの作業の流れ

GitHub アカウント作成 & ログイン
オリジナルのリポジトリを自分のアカウントにfork
オリジナルまたはフォークしたリポジトリをローカルリポジトリにclone
クローンしたリポジトリ内で開発作業を行う
cloneで行った更新を、forkした自分のリモートリポジトリにcommit
forkしたリモートリポジトリからオリジナルのリポジトリにプルリクエスト (Pull Request) を送信

Atom テーマカスタマイズ

メインスタイルシート index.less

styles/base.lessを読み込むメインの設定ファイル

ベーススタイルシート styles/base.less

要素や変数、クォーテションや属性などの設定ファイル
colors.lessで設定した色を取り出して設定していきます。

カラースタイルシート styles/colors.less

主な色を設定しときます。
赤はこの色、青はあの色などを決めときます。

要素検証
⌘ + Alt + i

Atom 再起動
Cmd + Alt + Ctrl + L

Bash ln シンボリックリンクの使い方

シンボリックリンク

特定のファイルやディレクトリを指し示す別のファイルを作成し、
それを通じて元のファイルを参照できるようにする仕組み

$ ln -s [シンボリックリンクを作成したいファイルのパス]  [シンボリックリンクを置くフォルダのパス]
$ ln -s [参照させたいファイルやディレクトリパス]  [参照ファイルとリンクさせるパス]
$ ln -s ~/Dropbox/Sublime\ Text\ 3/Packages ~/Library/Application Support/Sublime\ Text 3/

Sublime Text やAtomの設定ファイルをDropboxにバックアップとして
置いときたかったので設定してみました。

  • n # ディレクトリとリンクを置き換える
  • f # リンク先に同名のリンク・ファイルがあるときも警告なく上書きする
  • s # シンボリック・リンクを作成する

unlink [シンボリックリンクを置くフォルダのパス]

PHP Mysqlに接続 SQLでInsertする

Mysqlの接続

$dns = "mysql:dbname=任意のデータベース名;host=ホスト名";
$username = "MysqlのユーザーID";
$password = "Mysqlのパスワード"
try {
      $pdo = new PDO($dns, $username, $password, array(PDO::ATTR_EMULATE_PREPARES => false));
} catch (PDOException $e) {
    // - ここではエラー内容を表示しているが、実際の商用環境ではログファイルに記録するだけで、Webブラウザには出さないほうが望ましい。
    var_dump($e->getMessage());
    echo "接続失敗です。";
  }

$cat = "猫";
$dog = "犬";
$num = 100;
//sqlを作成。プリペアドステートメントで挿入すると値が文字列変換されSQLインジェクション対策として◯
//カラム名nを名前つきプレースホルダで置き換えてINSERT クエリを実行
$sql = "INSERT INTO テーブル名 (カラム名1, カラム名2,カラム名n) VALUES (:val1, :val2,:valn)";
$stmt = $pdo -> prepare($sql);
//変数をプリペアドステートメントにバインド(結びつける)します
$stmt->bindParam(":val1", $cat, PDO::PARAM_STR);
$stmt->bindParam(":val2", $dog, PDO::PARAM_STR);
$stmt->bindValue(":valn", $num PDO::PARAM_INT);
//プリペアドステートメントを実行
$stmt->execute();

// ステートメントと接続を閉じます
$stmt->close();

SQL 補完機能追加

Terminalでbashを操作する場合に、
ほとんどの人がTabで補完機能を使用しているかと思います。

それと同じくTerminalでSQLを操作する場合に
補完機能を付加してくれるパッケージがありますので
健忘録として残しておきます。

mycliをインストールすれば補完機能を使えるようになります。
mysqlではなくmycliでログインすればOKです。

 $ mycli  u ユーザー名 -S ソケットパス

Python 健忘録

importしたモジュールの場所を調べる

import numpy
print(numpy.__file__)

スクリプト実行ディレクトリを絶対パスで取得する

import os

print("__file__                                  : %r" %  __file__)
print("os.path.dirname(__file__)                 : %r" % (os.path.dirname(__file__)))
print("os.path.abspath(__file__)                 : %r" % (os.path.abspath(__file__)))
print("os.path.dirname(os.path.abspath(__file__)): %r" % (os.path.dirname(os.path.abspath(__file__))))
topへ戻る