信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    WindowsにLinux(CentOS)環境を構築する。Telnet接続まで。

    VMware Playerを用いて、Windows上にLinux(CentOS)環境を構築する手順を紹介します。この環境は、Linuxのコマンド練習や、実サーバにおける作業手順の事前確認に有効です。VMware Playerの詳細については、以下を参考にして下さい。http://ja.wikipedia.org/wiki/VMware尚、ローカルに限定された環境を想定している為、セキュリティについては考慮しません。(1)▼VMware Playerhttp://www.vmware.com/go/downloadplayer/今回は"VMware-player-5.0.0-812388.exe"(73MB)をDLしました。DL後、インストールを完了させて下さい。必要に応じてインストール先の変更やチェックボックスのON/OFFを行なって下さい。(2)▼CentOS(VMware Image)http://www.thoughtpolice.co.uk/vmware/今回は"32-bit: centos-6.2-i386-server.zip"(697MB)をDLしました。"web download"をクリックするとSourceForgeからDL出来ます。DL後、解凍して下さい。尚、誤操作でOSイメージが破損した場合等の為に、このzipファイルは、残しておいて下さい。(3)(1)でインストールしたVMware Playerを起動して下さい。"仮想マシンを開く" > (2)の"centos-6.2-i386-server.vmx"を選択 > "仮想マシンの再生"と進んで下さい。各ダイアログは、内容を読んで進めて下さい。"Choose a Tool" > "Firewall configuration" > "Run Tool" > スペースキー > "OK" > "Yes""Choose a Tool" > "Keyboard configuration" > "Run Tool" > "Japanese" > "OK""Choose a Tool" > "Quit"と進めて下さい。選択は、カーソルキーとエンターキーで行います。認証情報入力を促す表示がされたら、以下を入力して下さい。 localhost login: root password: thoughtpolice (2)のOSイメージがこのパスワードで初期化されているだけで、標準のパスワードということでは有りません。(4)rootのパスワードを変更します。 passwd 設定したいパスワードを2回入力します。(5)ユーザの作成(今回は、"admin"というユーザを作成します。) useradd admin passwd admin 設定したいパスワードを2回入力します。(6)telnetのインストールをします。 yum -y install telnet-server (7)/etc/xinetd.d/telnetの編集をします。 vi /etc/xinetd.d/telnet キーボードの"I"を押して下さい。disable = yesをdisable = noに変更して下さい。尚、カーソルキーで移動出来ます。変更できたら、"Esc"キーを押して下さい。続けて、":wq"と入力して、Enterキーを押して下さい。念の為、以下のコマンドで内容が正しいか確認して下さい。 more /etc/xinetd.d/telnet 以下のコマンドを実行して下さい。 /etc/init.d/xinetd start (8)好きなターミナルソフトでtelnet接続します。プロトコルはTelnet、ポートは23として下さい。接続先IPアドレスは以下のコマンドで確認できます。 ifconfig 以下の"inet addr:"に続くIPアドレスを接続先のIPアドレスとして下さい。(5)のユーザでログインして下さい。このOSイメージで、FTP設定、SSH設定、Apache + MySQL + PHPのインストール等、色々と確認が可能です。
  • テクログ

    スマホサイト制作で役立ったもの

    スマホサイトを制作する上で便利だなと思ったコード 備忘録として記録しておきます。少しでも参考になればと思います。   ・view port width=device-width...ウィンドウの横幅をデバイスの横幅(iPhoneの場合は320px)と指定 initial-scale=1 ... 表示倍率の初期値 maximum-scale=1 ... 表示倍率の最大値 user-scalable=no ... ユーザー側の操作で、拡大/縮小を出来るようにするかの可否   ・iphoneやAndroidのデフォルト設定を無効にする。 -webkit-appearance: none; ・iphoneのみCSSを適用する /* iphone.css */ @media screen and (max-device-width: 480px) {  #help_me { color: red;  } } スマホサイト制作を行う上で上記を知っておくとなにかと役に立ちそうです。 スマホサイトは今後も伸びていくと思われます。より多くの技術や役に立ちそうなコードがあれば 載せていきたいと思います。
  • テクログ

    SQL ServerとMySQL

    技術ブログが始まって2ヶ月弱・・・・みんなしっかりとした知識を披露してくれて・・・タジタジのなべっちです。最近は開発をガッツリやっているわけではないので、書かずに華麗にスルーしようと思っていたのですが・・・しかたない。次に繋がるように、簡単にわかる事を書いてハードルをさげてやろうと思っています。遠い過去の話ですが・・・VB6とSQL Serverを使ってとある保険のシステムを開発していました。ずっとSQL Serverを使っていたので、私の基本的なSQL文法=SQL Serverの文法という図式が成立してしまっています。最近のコアテックでは、MySQLを使うことが非常に多いのですが、SQL Serverとの違いなんてまったく意識せずSQL文を書く事が・・・すると・・・・何度確認してもあっているはずの文法が動かなくてはまるという事がありまして・・・非常に苦労しました。。。。調べていたらこんな違いが!と言う事が書いてあるHPを見つけてやっと解決。。。。非常に助かったので、そのHPから抜粋して違いを書いておきます。はまったのはこの部分↓・DELETE文等で自分自身をサブクエリで参照できない! DELETE FROM table1 WHERE id IN (SELECT id FROM table1 where key = 1 ) keyの値 が 1 のレコードを削除するという文です。※本来はサブクエリを使う必要がない文ですけど、わかりやすく簡単に書いてあります。その他にこんなのもありました。・SELECT INSERT INSERT INTO table1 (a1,a2) SELECT '値1','値2' FROM table1  WHERE NOT EXISTS (SELECT * FROM table1 WHERE a1 = '値1' AND a2 ='値2') 既に値1、値2のレコードが存在している場合は登録しないという文です。My SQLではNOT EXISTSでもEXISTSでも行が取れない為 レコードは登録されないようです。解決方法は↓ INSERT INTO table1 (a1,a2) SELECT '値1','値2' FROM (SELECT '値1' AS b1,'値2' AS b2) tbl1 WHERE NOT EXISTS (SELECT * FROM table1 WHERE a1 = '値1' AND a2 ='値2') とサブクエリを挟むと行が作成されてレコードが登録されるようです。もう1つAUTO_INCREMENTは物理削除すると削除した番号を再利用する SQL ServerのIDENTITYとは違うので同じ感覚で使用するとはまる原因になりそうです。 主キーとして使用する際にはご注意を・・・・気付かなかった~知らなかった~とはまる事があるようなのでメモ書き程度に書いておきます。次回からは役立つ技術情報が続く・・・・はず。
  • テクログ

    KeepAliveTimeoutについて

    みなさん、こんにちわ。 らめぇです。 では、早速。。   KeepAliveの説明 1回のTCP接続で複数のHTTPリクエストを処理する機能。 HTTP/1.0 の Keep-Alive 拡張と HTTP/1.1 の持続的接続の機能は、 複数のリクエストが同じ TCP の接続で送られる、長時間持続する HTTP セッションを提供します。 apacheドキュメントより引用 簡単に説明するとKeepAliveとは、「three-way handshaking」の節約です。 画像やCSSが多いサイトではKeepAliveをonにすることによりその恩恵を受けることができるでしょう。   KeepAlive関連ディレクティブは、以下のとおりです。 下記のディレクティブを設定することでKeepAlive機能を制御します。 KeepAlive HTTP の持続的な接続を有効にします。(On/Offで設定します) KeepAliveTimeout  KeepAlive=On の時に有効で、持続的な接続で次のリクエストが来るまでサーバが待つ時間(秒)を設定します。 MaxKeepAliveRequests KeepAlive=On の時に有効で、持続的な接続上で許可されるリクエストの数を設定します。 KeepAliveTimeoutってなに? 以下の設定について考えてみましょう。 KeepAliveTimeout 15 KeepAliveとは「three-way handshaking」の節約と説明しました。 Webサーバとの間で確立した接続が転送終了後も維持され、2回目以降のリクエストではこの接続をそのまま使用できる。 一見、良いことだらけに見えるこのKeepAliveにも欠点があります。   その一つがKeepAliveTimeoutの設定時間   上の例では、KeepAliveTimeout 15としています。   ひとつの要求が完了してから、コネクションを切断しないで次の要求を受け入れるまでの時間。言い方を変えると「クライアントからのリクエストがなくてもKeepAliveを維持する秒数」ということになります。   「リクエストがなくてもKeepAliveを維持する秒数」ここがポイントです。処理がすぐに終わった場合でもKeepAliveTimeout 15のままだと、15秒間接続をキープしたままになり、このプロセスは無駄になってしまうということです。   短くするほど無駄な接続を減らせますが、短くしすぎると必要なコネクションまで閉じてしまいます。クライアントがコネクションを確立し直す場合が増えます。   結局は環境に合わせて適切な値を見つけてくださいってことです。   小規模のサイトではあまり気にしない(設定を変えても効果はないと思います)KeepAliveの設定。 アクセスが増え、パフォーマンスが低下してきたら一度見直してみると良いかもしれません。 らめぇでした。
  • テクログ

    正規表現

    正規表現が苦手という人をよく見かけます。そういう私も少し前までは苦手でなるべく避けて通っていたクチです。何が嫌だったのかと思い返すと、単に慣れていなかったのが原因だったような気がします。という事で、覚えることもそんなに多くないのでサクッと苦手意識を無くしてしまいましょう。文字指定.(ドット) 何でもいい一文字[abc] aかbかcの何れか[^abc] aかbかcの何れか以外[a-c] aかbかcの何れか()括弧 グループとして扱う(abc|def) abc、defのどちらか文字数指定? 直前の文字が0回か、1回マッチ* 直前の文字が0回以上マッチ+ 直前の文字が1回以上マッチ{3}直前の文字が3回マッチ[3,]直前の文字が3回以上マッチ[3,5]直前の文字が3回から5回マッチ位置^ 最初$ 最後その他 上記のメタ文字を文字として扱う? 最短マッチ+*と組み合わせれば次の文字が最初に現れるまでこの辺りが基本ではないかと思います。あとは習うより慣れろということで実戦で使っていけば苦手意識は無くなっていくはずです。一つだけ、気をつけるポイントは「.(ドット)」はなるべく使わないといったところでしょうか。何でもいい一文字は思わぬものをヒットさせて不具合の原因になります。正規表現は様々なプラットフォームで使えます。phpやjavascriptなどはもちろん、mod_rewriteやmysql、postgresなどのwhere句など。多少の文法は違いはありますが、基本を覚えておけばどんなプラットフォームでもいけます。覚えておいて損はない技術です。
  • テクログ

    SmartyとCakeの連携について

    みなさんこんにちわ☆彡技術ブログ初投稿のni-yoです。今回はsmarty + cakePHPの連携についての内容です。当社のサイトは言語もフレームワークも様々なものがありますが、その中のサイトの1つにこんな環境があります。■言語:PHP■フレームワーク:cakePHP1.3系■view:Smarty:2.6.26ディレクトリ構造は基本的にはcakeの構造にし、cakeのapp/vendersのしたにsmartyライブラリを設置します。・ControllerからSmarty_Viewへの値の渡し方 ■例1)・Controller.php $data = 'こいつが出したいデータ'; $this->set('data',$data); ・指定url/index.tpl(viewへの配置場所はcakeと同じ、拡張子が.tpl) こんにちわ、これはテストです{$data} 上記のような構造にすると、結果は以下のようになります。『こんにちわ、これはテストですこいつが出したいデータ』上記のように、Smartyではview内に<?php ?>というお決まりのphpタグを記述する必要はありません。値の引渡しは簡単ですね。Controllerでなくview側でphp関数を使いたい時もあるかと思います。例えば、view側でphp関数を用いてencodingをかけたい場合は以下のように記述します。■例2)・Controller.php $data = 'こいつが出したいデータ'; $this->set('data',$data); ・指定url/index.tpl こんにちわ、これはテストです{$data|mb_convert_encoding:'SJIS':'UTF-8'} 上記のように関数処理をかけたい変数に対して『|mb_convert_encoding:'SJIS':'UTF-8'』とつなげてやると変数に対して関数処理を終了した結果がviewに反映されます。viewでヘルパー使いたい時はCakeのヘルパーも形を変えれば使用できますが、弊社では折角なのでSmartyのヘルパーを使ってます。ヘルパーを用いてセレクトボックスを使いたい場合は以下のように記述します。■例3)・指定url/index.tpl {html_options name=namae output=(ドロップダウンリスト出力内容配列) values=(ドロップダウンリストvalue値配列)} 上記のように記述すると、出力したソースを見ると指定した配列分だけoptionを持ったセレクトボックスが作成されます。ヘルパー等については以下のサイトが参考になります。http://www.smarty.net/docsv2/ja/…とまあ、Smartyを使うことでview内にphpの記述をしなくてもいいのでその名の通りスマートなのですが、不便なところも色々あります、一例としては★Shift-JISの問題PC表示側はUTF8 MB表示側はSJISで記述しないといけない場合もあるかと思いますが、その際に問題が起こります。スマーティの基本的なphp変数の呼び出しは上記したとおり『{』と『}』を使うわけですが、SJISは「{」(0x007b)と「}」(0x007d)に相当するコードをふくんでいることがあります。例えば、閲(897B)、顎(8A7B)、宮(8B7B)などがこれに該当します。上記コードはデリミタに含む7Bを含んでいるので、Smartyは{が入っていると判断してしまい、正しく解析できなくなり激しく文字化けします。回避策はググるとだいたい2パターンです。①デリミタ変更$smarty->left_delimiter = '{{';$smarty->right_delimiter = '}}';上記の例はview側のこれはPHPだよってタグを{{と}}に変更してやる方法、これはもうPC側とか管理側をガッツリ{}で組んでたので断念…②プリフィルタとポストフィルタを設定するSmartyテンプレのコンパイル時と出力結果ファイル保存時にエンコーディングを指定する方法です。しかし、この方法もフォルダ構成上SmartyライブラリはPC/SP含む全てのviewに影響を与えるので、全てのviewをSJIS変換されてしまうと困るためこれも断念…ですので、弊社としての対策はリテラルタグの挿入です。■例4 {literal}閲覧注意{/literal} 上記のように、デリミタコードを含む閲のような文字を入れても、リテラルタグを挿入すると文字化けしません。これは、『{literal}』タグで囲まれた中はPHPの変数はありませんよ~っていう意味に出来るからです。あと、Smartyはキャッシュが強力なので開発中は変更部分が切り替わらない、ヘルパーがうまく動作しないなどの不具合をちょいちょい起こしてくれます。うまく動かない時はキャッシュ削除を一度試してみてください。ではでは~!