PostgreSQL
PostgreSQL
2016.3.11 金
原因がよくわからないのだけどNFSクライアントの設定をしたサーバーを再起動したら起動できなくなってしまった。 .... NFS サービスを起動中: [ OK ] NFS mountd を起動中: [失敗] NFS デーモンを起動中: svc: failed to register nfsdv2 RPC service (errno 110). svc: failed to register nfsaclv2 RPC service (errno 110). nfsd: last server has exited, flushing export cache rpc.nfsd: writing fd to kernel failed: errno 110 (Connection timed ...
2016.3.11 金
ドロップで画像投稿ができるとかとても便利なんですが、挿入されるタグが定形なので何とも不便。 デフォルトではこんな感じのタグが挿入されます。 <a href="https://saba.omnioo.com/note/wp-content/uploads/2016/03/osamubot300.jpg" rel="attachment wp-att-20"><img src="https://saba.omnioo.com/note/wp-content/uploads/2016/03/osamubot300-150x150.jpg" alt="osamubot300" width="150" height="150" class="alignnone size-thumbn...
2016.3.11 金
https://github.com/github/gitignore Wordpressとかフレームワークとかのignoreファイルとかはここからひっぱってくるととてもいいです。pullばっかり。
2016.3.11 金
rsyncはとても便利です。開発環境の内容を一発で本番環境にアップロードするとかいうときにはとても便利です。Gitでpullするのもいいけどrsyncもいいです。各個人の開発環境からみんなで動作検証とかする開発ステージング環境へ反映するときはGitの方がいいけど、本番とミラーリングしているステージング環境なんかを本番に同期するにはrsyncの方がいい。というのはGitにはディレクトリパーミッションを保持する機能がないのです。rsyncにはあります。 またcronなんかで定期的に同期をとるにもrsyncはとてもいいです。更に双方のディレクトリの差分を事前にとることもできます。これはGitの方が便利かな。 基本的な使い方 rsync -a /from /to ディレクトリを丸ごとコピーする際には...
2016.3.11 金
SEO対策がいかに胡散臭い話かというところを順を追って解説してゆきます。まずはアクセス数0からはじまるSaba noteを実験台にしてやってみようと思います。 何が実際に効果的だったかというのと、何が全く効果がなかったのかをわかる範囲で分析してゆきたいと思います。
2016.3.9 水
この時代にsedなんか使っている人がいるんだかいないんだかですが、やっぱり軽くていいです。置換ソフトは数あれど、比較的巨大なファイルも難なく一発置換してくれるのが、sedです。grepなんかと一緒に使ったりします。結構使う頻度多いかもです。Jeditで6MB超のファイルを置換したらフリーズしてしまうのでサーバ上で置換しました。 sed -e s/<置換対象文字列>/<置換語の文字列>/g <置換対象ファイル> <置換後のファイル> 今回はMySQLのDBからダンプしたファイルのURLをすべて置換というので、使いました。 sed -e s/www.example.com/home.example.com/g DB.sql > DB2.sql...
2016.3.9 水
localhost以外からつなぐ方が業務的には圧倒的に多いのだけど、趣味的にはまるでこの世にはlocalhostしかないんじゃないかっていうぐらい外部ホストのMySQLに接続することはないです。 権限の設定 mysqlの権限設定grantでユーザー・パスワード・ホスト・DB名をいっしょくたに絡めて設定します。その際にホストの設定もすることになります。このホストにmysqlに接続してくるクライアント側のやホスト名を設定します。rootで設定しないとダメです。 mysql> grant all privileges on [DBNAME].* to [USERNAME]@[HOSTNAME] identified by '[PASSWORD]' with grant option; これで...
2016.3.9 水
nfsで外部ホストの領域をマウントする方法いろいろです。まずはネットワークでサーバーとクライアントがつながっていることが前提となります。私はVLANの設定を忘れていて手前で四苦八苦していた経験ありです。少なくともSSHで接続できて、それぞれのFWやIP制限などを確認しておきましょう。 現状マウントされているDiskの確認 # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 30G 2.8G 26G 10% / tmpfs 497M 0 497M 0% /dev/shm none 497M 40K 497M 1% /tmp 192.168.0.2:/var/home/user 296G 1.1G 280G 1% /home...
2016.3.9 水
Gitの作成時 gitのイニシャライズ $ git init gitのバージョン確認 $ git --version git version 1.7.1 ユーザーの作成 –globalをつけるとすべてのgitのユーザーになる。 $ git config --global user.name USERNAME (git config user.name USERNAME) Emailの登録 $ git config --global user.email USERNAME@example.com (git config user.email USERNAME@example.com) 端末操作時に色をつける(これいい) –globalありでOK。 $ git confi...
2016.3.9 水
Rubyが流行るのはon Railsがあるからです。phpにはLaravelがありSymfonyがありCakePHPがあります。どれもこれも捨てがたいのですが、私はLaravel5が好きです。どうしてかというと、 そんなに大規模な開発はしない そんなに大それたプログラマーではない そんなに多くを学びたくない という理由からです。もしこれに該当する方がいればLaravelがいちばん楽しいです。 Laravel5を理解するために他のフレームワークと比較してみます。Symfonyは言わずと知れた立派なフレームワークであまりにも立派すぎます。大企業が大企業的なポータルサイトや会員サイトを作るのに向いています。というのはMVCがものすごくしっかりしていて、秩序だてられていて非常に厳格な規約によって支え...
2016.3.9 水
ルーティング Laravel5はその他のフレームワークと同様にページの作成はすべてMCVで行います。基本的にはすべてコントローラーを介して情報を返すというのがMCVの役目なのでアクセスされたページがどのコントローラーと紐付いているのかを決定しなくてはなりません。その役目がルーティングになります。 各ページのルーティングは app/Http/routes.php にまとめて記述します。 Laravel5.3からroutesが引越しました。 ルーティングはこちらのファイルに記述します。 routes/web.php 無名関数で文字列だけ表示するページを作成する ここでは単にルーティングしたページにアクセスしたら文字列を表示するというだけなので、いわゆる無名関数でその内容を表示します。デフォルトで...
2016.3.8 火
誰も変化など望んではいない 思考回路に限らず体系が劇的にかわることがあるのげど、あんまり臨まれていないような気がしております。体系が変化して生活それ自体が変化してしまった悪例としてはオーム真理教があると思うんですが、家族が修行の中で焼却されたりするのが彼等にとって幸福だったのかどうかは別としても殺人に対して良心の呵責がなくなってしまうというのはひどいものだとは思います。しかし体系がかわることにたいしてはそういう意味もあってかどうかわからないけど世間ではあまり望まれていないし期待もされていないような気がしているのです。二律背反的な要素がふんだんにあるので危険であるということなんでしょうか。 体系の変化といえば、コペルニクスとアイン・シュタインがわかりやすいです。コペルニクス的回転という比喩があ...
2016.3.7 月
sqliteのエラー デバックキットなんかで使っています。 SQLSTATE[HY000]: General error: 8 attempt to write a readonly database ./app/tmp/debug_kit.sqliteというファイルがあるのでパーミッションと606か666ぐらいにしておくと治ります。
2016.3.7 月
ユーザー作成 adduser [USERNAME] ユーザーが作成されて、たぶん/home以下に[USERNAME]ディレクトリが作成されます。このときの内容は/etc/skelがコピーされます。 CentOSなんかはディレクトリのパーミッションが700とかになっているので、そのままWEBサーバーのディレクトリにしようと思うと403になっちゃいます。適当なパーミッションを与えてください。 パスワードの設定はまだなされていないのでご注意。 パスワードの作成 passwd [USERNAME] password: [PASSWORD] passwdコマンドでユーザーを指定して出てきたプロンプトからパスワードを新規で入力します。パスワードの更新変更の場合も全く同じ手続きになります。
2016.3.7 月
opacityはその範囲内のものを全部透過してしまうのです。
2016.3.7 月
border-radius ブロック要素に対して角丸ができます。 (IE9以降、Firefox4以降、Chrome5以降、Safari5以降、Opera11.5以降のみ) border: 3px green solid; border-radius: 5px; 各箇所を個別に丸くする border-top-left-radius: 5px; /* 左上 */ border-top-right-radius: 5px; /* 右上 */ border-bottom-left-radius: 5px; /* 左下 */ border-bottom-right-radius: 5px; /* 右下 */
2016.3.7 月
Device width PC 769px iPad 641px – 768px iPhone 320px – 640px CSS1個でやるときにはこんな感じ。 @media screen and (min-width:769px) { .... } @media screen and (min-width:641px) and (max-width: 768px) { .... } @media screen and (min-width:320px) and (max-width: 640px) { .... } CSSをわけるのだったら、こういう感じ。 @import url("https://saba.omnioo.com/assets/css/base.cs...
2016.3.7 月
タグの設定 https://cse.google.co.jp/cse/ 自分のホームページなんかにGoogleの検索機能が付けられるというものです。むかしからあるんですが、だいぶ進化したので。 まずは適当なGoogleアカウントでログインして上記URLにアクセスしてみます。 検索するサイト 言語 検索エンジンの名前 検索オプション を入力して作成ボタンを押します。 コードが作成されるので、それを自分のHPに貼り付けます。 <script> (function() { var cx = '009503186892029741062:gpqstvi6va8'; var gcse = document.createElement('script'); gcse.type = 'text...
2016.3.6 日
数字 任意の桁の数字にマッチ preg_match("/^[0-9]+$/",$str); 0とか2345とか999とか数字は何でもマッチ。
2016.3.6 日
htmlspecialchars() http://php.net/manual/ja/function.htmlspecialchars.php 問題がなければENT_QUOTESでよいかと思います。もっと繊細にやりたい場合は文字コードを第3引数につけるとか。 シングルクオートとダブルクオートを共に変換します。 htmlspecialchars($input, ENT_QUOTES, "UTF-8"); HTMLの実体参照を用い、& を &amp; に、< を &lt; に、> を &gt; に、” を &quot; に、それぞれ置換する。 PHPではhtmlspecialchars関数を用いれば、一括で対策できる (ただしENT_...
2016.3.6 日
htmlのheadでリダイレクト metaでリダイレクトできます。htmlファイルそのものにアクセスした際に別のURLへリダイレクトします。同ホスト内の場合はルート相対でパスを書くだけでも大丈夫です。 <meta http-equiv="refresh" content="[秒];URL=[URL/PATH]"> この場合は5秒後に/sp/にジャンプします。 <meta http-equiv="refresh" content="5;URL=/sp/index.html"> Javascriptでリダイレクト 同ホスト内の場合はルート相対でパスだけ書いても大丈夫。 location.href='[URL]'; PHPでリダイレクト echoしたりvar_dumpする前...
2016.3.6 日
dumpのとき Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions… GTIDsを使ったデータベースのレプリケーションをしているときにDumpするとこういうWarnigが出たりします。ダンプデータ自体は落ちてくるので問題なし。GTIDはトランザクションに紐付いたIDなので、例えば開発環境と本番環境などでスキーマだけ移動させたいときなんかは特に必要ないです。いすれにしろレプリケーション自体あんまりやらないので滅多に出ないWarningではあります。 Warning: A partial dump from a server...
2016.3.6 日
Login 最近のバージョンでは-pの後にパスワードベタ書きができなくなったようです。-pPASSWORD こういうやつ。 -hのホスト名を省略すると自動的にlocalhostになります。 mysql -u [USERNAME] -p -h [HOSTNAME] DB DB名を表示する ログインしたユーザーが操作できる権限のDBが表示されます。rootだと全部。 mysql> show databases; DBを選択する DB選択しないと中身の操作できません。 mysql> use [DBNAME]; Table DB内のテーブルを表示する mysql> show tables; テーブル削除(要注意!) こっちは物理的にテーブルごと削除されます。 mysql> d...
2016.3.6 日
SEOという都市伝説があってこれは今も尚(ちょっと下火になったけど)存在しているのですが、今ではGoogle一人勝ちの検索ランキングの話になっております。いわゆるSEO対策というのはGoogleのランキングの解析アルゴリズムに委ねられているということです。 Javascriptで書きだしたソースはちょっと前までは正確な意味でのhttpレスポンスとして返ってこないという理由からランキングが落とされていました。実際にWebページのソースとしては表示されているそれそのもののソースではなくJavascriptのインクルードパスが書かれているのみだったからです。しかしながら最近ではこれらの実質的な内容をGoogleが読み取りそれらをkeywordとして登録するようになりました。つまりランキングには影響...
2016.3.6 日
mod_rewriteとは Apacheの機能でURLを書き換えてしまうというものです。SEO対策的な風潮の中で大流行しました。.phpの拡張子より.htmlの方が優先度が高いなんていう都市伝説が横行していた時代です。実際そうだったのかそうじゃなかったのかはわからないです。 portで判断する ポート80(http)でアクセスしてきたらhttpsにリライトする。SSLアクセスだけのサイトなどはこのような形にしているかと思います。RewriteCondで条件をport 80で判定します。 RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,...
2016.3.6 日
インターネットの創世記 私が若い時にはまだWEBとかインターネットいうものがなくて主なリモートメディアは電話でした。ポケベルも電話回線を使ったものだったし「電話」が通信技術の主流でした。(アマチュア無線とかそういうのもありました。モールス信号とか。) インターネットが一部のマニアに普及したのが私が20代前半頃で主にEmailでした。当時は電子メールと言っていました。 インターネットの接続にはまだ電話回線を使っていたのでいわゆるアナログ回線です。アナログ回線に電子的な2進数のデータを送受信させることから当時のFAXとだいたい同じような仕様だったのではないでしょうか。モデムといわれる交換器をPCと電話回線の間に挟んで通信しました。電子メールを数通受信するのに5分〜10分かかっていた時代です。1回...
2016.3.6 日
テーブルの初期化の方法 連番になっている主キーとかを初期化します。 mysql> USE [DBNAME]; mysql> TRUNCATE TABLE [TABLENAME]; mysql> ALTER TABLE [TABLENAME] AUTO_INCREMENT = 1; これでレコードが1から始まります。 途中の番号から始める 例えば最初のレコードを1000から始めたい場合などはそのまま値を1000にするだけです。 mysql> ALTER TABLE [TABLENAME] AUTO_INCREMENT = 1000; ですが、実レコードに1000以上のものがあると実行できません。
2016.3.6 日
composerを使ってLaravelインストール curlが使える場合 curlがあると簡単 curl -s http://getcomposer.org/installer | php phpもパスが通っていると楽 php composer.phar create-project laravel/laravel approot--prefer-dist gate/publicにDocumentRootを設定してあげてlogとかviewとかにパーミッション与えて初期インストールはだいたい終わり。 composerを使ってLaravelインストール curlが使えない場合 composer-setup.phpをダウンロード curlが使えない環境だとこれ。しかもphpはフルパスで書かないとダ...
2016.3.6 日
preタグは改行できない仕組みになっているのですが、改行できないと困ってしまうときがあります。 white-space: -moz-pre-wrap; /* Mozilla */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ 公式的なスタイルになっていないのか、各ブラウザーに対して個別に書かないとダメです。
2016.3.6 日
アクセス時のbody幅とWindowを動的に伸び縮みさせたときのbody幅を取得します。これ使うとレスポンシブ対応のWEBデザインに比較的柔軟に対応できます。 静的には$(window).width()でそのまま取得できるのですが、動的にはこのままではダメでsetTimeout()を使って幅を取得するってところが面倒なのです。 $(function(){ // Window width default var egwidth = $(window).width(); console.log(egwidth); if (egwidth <= 640) { alert("スマホで見ている。"); } else if (egwidth > 640) { alert("PCで見ている。"...