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

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

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

LIST OF ARTICLES

記事一覧

  • テクログ

    謎のエラーが消えない

    はーい。どうも。ぶーちゃんです。 技術ブログ・・・・なに書こうかなー。みんなかっこよくて書くのビクビクしています・・・・。   技術って訳じゃないけど、よくハマって「え?!なんで?」ってなることを思いついたので、 書いておきます。    新規で作る場合は、ほぼこの問題がおきないと思うんですが、既存のあるものに追加、変更を 繰り返していると、あとで「あー。なんだ。」って思うことがしばしば・・・。    こんなプログラム(ASP)をHTMLに書くとします。             最近はスマホサイトブームですからね。  新しく「ベース処理」と「アナタのキャリアはなんですの?」処理を追加  「スマホ処理」をガリガリ書いて、よし!完成!スマホでテスト実施!! 「はい。いきなりエラー。」「しってた。しってた。」  トライ&エラーの鬼の私には、いつものこと(普通の人はやらないですよねw) 「まあね。どこかやっちゃったんだろう。」ってスマホ処理.aspを見直します。  「あれ??ないなー。悪い事ないよな。頭は悪いけど・・・・って誰が頭が悪いじゃ!」 ね?寂しいでしょ? プログラマって独り言多くなると思うんですけど、どう思います? まあメンドくさいポイントとして、ASPをテキストエディタで書いてるからね。 eclipseとかでアシストしてくれて、コンパイルエラーなんて見つけてくれませんよ。・・・。 何回もデバッグ出力して、 「あれ?どこだろう?・・・・ってか何書いてもエラーになるんだけど?! サーバー壊れてんじゃね?」 はい。すみません。壊れてるのは私の頭です。。。。 問題は「スマホ処理.asp」じゃなくて、前からあった「PC&moble処理.asp」だったんです。 「PC&moble処理.asp」は、別に何も変えてません。触れてもいません。しかもif文。 けどエラーなんです。えーえー。ですからー。えー。 「PC&moble処理.asp」で「ベース.asp」をインクルードしてたんですねー。 2重定義ってやつですね。 PC&moble側の問題がスマホ側までエラーとして出ちゃうんですね。 いやー。最初に会った時は本当にビビりました。 if文でもコンパイル時はPC&moble側まで見るんですね。 かなり嵌りましたw とりえあず入れておけ。入れておけ。って精神だとダメって勉強しました。 ASPとかってインクルードって読み込んでるファイルを内部的に全展開してるだけだからですかね? なにかいい方法で回避出来ないですかねー。調べたんですがいい方法がなかったんですよね。 さわってない、触れてない、if文で括られてるからと言って、必ずしも大丈夫ではない。 確認することを忘れず、これからも作業していきたいってことですね! ってな感じで今回のブログを終了します。 ・・・・かなりおそまつでした・・・。ではまた。
  • テクログ

    [FuelPHP]ViewModelについて

    こんにちは。 先日Fuelの勉強会に参加したら「 家に帰ってブログを書くまでが勉強会です!」と言われてしまったので、今熱い!(?)FuelPHPのViewとViewModelについて。 フレームワークを利用している方ならMVCモデルに慣れ親しんでいると思うのですが、FuelではMVCにプラスして「ViewModel」というものを利用することができます。 Viewモデルとはなんぞや?ということですが、 ざっくりとこんなイメージです。 VMを利用するメリットですが、見ての通り、Controllerでは一切値を触らないので(VMに投げて、Modelから受け取るだけ)ソースがスッキリとまとまるという利点があります。 // contoroller function  action_index(){ $data = Model_XXXXX::find(XXXXXX); foreach($data) // viewにセットするための処理諸々(プルダウンのセットやチェックボックスの値挿入など) } } としていたものが、 // contoroller function action_index(){ $view = ViewModel::forge($viewName,'view',false); $this->template->content = View::forge('view',$data); } // ViewModel function view(){ $data = $this->data; foreach($data) // viewにセットするための処理諸々(プルダウンのセットやチェックボックスの値挿入など) } } のような感じになります。 これだけだと「分ける必要ないじゃん」って感じですが。。。 複雑な処理になればなるほど、contoroller側の記述がシンプルになっていくイメージです。 まだあまりサンプル例が紹介されていないので、これが正しい使い方なのかはいまいちよくわかっていません…。必ずしもVMを使う必要はないのですが、自分が悩んだ部分だったので健忘録代わりにメモしておきます。 FuelPHP、まだまだ発掘する部分が多くて楽しいフレームワークなので、興味のある方は触ってみるのもいいんじゃないでしょうか。
  • テクログ

    jQueryとJavaScript1

    ひょんなことから毎月1回の計5回にわたって 連載を行うことになりました。 連載内容(予定)ですが、jQueryやJavascriptについてを記載し、 最終回には、これまでの内容を駆使したちょっとしたゲームを作成する予定です。 今回はjQueryのセレクタについての豆知識を記載します。 まず、jQueryの構文です。 // 書式 $(セレクタ).メソッド(引数); // 例 $("div").text("あいうえお"); 次にセレクタの主な指定方法を記載します。 // 指定されたHTML要素 $("要素") // 指定されたid属性を持つ要素 $("#ID名") // 指定されたclass属性を持つHTML要素 $(".クラス名") // 要素1内にある要素2 $("要素1 要素2") // 要素1と要素2 $("要素1,要素2") 属性に関する指定もすることができます。 // 指定された属性が指定された値を持つ要素 $("[属性='値']") // 指定された属性が指定された値を持たない要素 $("[属性!='値']") // 指定された属性が指定された値で始まる要素 $("[属性^='値']") // 指定された属性が指定された値で終わる要素 $("[属性$='値']") // 指定された属性が指定された値を含んでいる要素 $("[属性*='値']") 特定の要素を取得したい場合は、下記のようなフィルタがあります。 // 指定された要素の最初の要素 $("要素:first") // 指定された要素の最後の要素 $("要素:last") // 指定された要素の偶数番目の要素 $("要素:even") // 指定された要素の奇数番目の要素 $("要素:odd") // 指定された要素の指定された番号の要素 $("要素:eq(番号)") // 指定された要素の指定された番号より前の要素 $("要素:lt(番号)") // 指定された要素の指定された番号より後の要素 $("要素:gt(番号)") いろいろな指定ができるセレクタですが、 パフォーマンスを考慮するのであれば、下記のように指定して下さい。 ●単一要素を取得する場合 ・ID指定できる場合は、ID指定にする。 $("#ID名") ・ID指定できない場合は、要素で絞り込んだ上で、クラス名や属性を付ける。 $("要素.クラス名") $("要素[属性='値']") ・クラス名だけでの指定はなるべく避ける。 $(".クラス名") // この指定方法は避ける ●複数要素を取得する場合 ・スペースで要素を絞り込むよりも、findメソッドを使用する。 $("#ID名 要素") // この指定方法は避ける // 下記のように指定する $("#ID名").find('要素') ●同一要素を使用する場合 ・要素を変数にして使用するか、メソッドを「.(ドット)」でつなげる メソッドチェーンを使用する。 $("セレクタ").メソッド1(); $("セレクタ").メソッド2(); $("セレクタ").メソッド3(); // この指定方法は避ける // 下記のように指定する var hoge = $("セレクタ"); hoge.メソッド1(); hoge.メソッド2(); hoge.メソッド3(); // メソッドチェーン $("セレクタ").メソッド1()             .メソッド2()             .メソッド3(); 次回からはゲームで使用するjQueryのメソッドについて記述したいと思います。 では、また来月お会いしましょう。。。
  • テクログ

    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とは違うので同じ感覚で使用するとはまる原因になりそうです。 主キーとして使用する際にはご注意を・・・・気付かなかった~知らなかった~とはまる事があるようなのでメモ書き程度に書いておきます。次回からは役立つ技術情報が続く・・・・はず。