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

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

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

LIST OF ARTICLES

記事一覧

  • テクログ

    iOS6でサイト見るとアレ?

    どうも!ぶーちゃんです。 ちょっとネタが古くなるんですが・・・・。 iphone5が発売されて、iOS6がリリースされて、ある問題が起きました。 まあ新しい地図アプリがクソすぎると、巷で有名になっちゃったので、 速攻でOSあげる人は、なかなか居なかったと思いますが、 iphone5は既存ですからね。 LTEでサクっとサイト閲覧!!って入ったら、「アレ?なんか堅いなー。」 ・・・・あれ?フォント明朝じゃね? えーー!!!なんで? ちょっとお前のiphone4S貸してー。あれ?普通だ、、、 え、、、iphone5だけ? なんてことになったと思います。そうです。 APPLEが勝手にやってくれたんですよ。 今までは標準フォントとして『ゴシック体』を使ってたんですが、 なぜかiOS6からは『明朝体』に変更されてしまったことで、CSS等で厳密に指定されていないwebページは 明朝による表示になってしまったんですね。 これはビビリましたね。ウチでもスマホサイト作ってますからね。 案の定「明朝」ですよ、、、 このままでイカンとCSS変更、試行錯誤の上、対応方法発見! 管理してるサイトに反映!チェック!ふぅー。って一連の流れを踏みました。 まあ対応をしては下記ですね。 『font-familyの最後に「sans-serif」をプラスする』 このままAPPLEさん対応してくれないんでしょか? 前の方がよかったと思うんですけど・・・・。 お粗末ですが、以上でーーす。

  • テクログ

    Expiresヘッダーを追加しよう

    お久しぶりです。 らめぇです。 今回はExpiresについて書きたいと思います。   弊社コーポレートサイトを生贄 対象にしています。   計測にはGTmetrixを使います。 では早速計測してみましょう。     「C」かぁ・・・悪くないっすね。 が、頑張ります。   Expiresヘッダーを追加してみましょう。   Expiresヘッダーとは Web page designs are getting richer and richer, which means more scripts, stylesheets, images, and Flash in the page. A first-time visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary HTTP requests on subsequent page views. Expires headers are most often used with images, but they should be used on all components including scripts, stylesheets, and Flash components. 引用:Yahoo! developer netowork   Expiresヘッダーを使えばjs、CSS、image、Flashなどをキャッシュさせて、 無駄なhttpリクエストを無くすことができますよー的なことです。   apacheのhttpd.confに以下の行があるか確認してください。 LoadModule expires_module modules/mod_expires.so 以下のような構文を使いExpiresを設定していきます   構文 ExpiresByType MIME-type seconds または代替構文を使い、読みやすい構文で指定することもできます。 ExpiresByType type/encoding " [plus] { }*"  は以下のどれかです access now ('access' と等価) modification コアテックコーポレートに設定した値も載せておきます。 今回はapacheの再起動が必要無いように.htaccessを使用しています。     ExpiresActive On     ExpiresByType image/jpeg "access plus 14 days"     ExpiresByType image/gif "access plus 14 days"     ExpiresByType image/png "access plus 14 days"     ExpiresByType video/x-flv "access plus 14 days"     ExpiresByType text/css "access 14 day"     ExpiresByType application/javascript "access 14 day" Yslowなどで画像ファイルのレスポンスヘッダを見てみましょう。 画像やjsのExpiresに指定した日付が入っていたら成功です。   もう一度、GTmetrixを使い計測してみましょう。     「B」になった☆ やったね(*´∀`)   皆さん、良いお年を~♪ らめぇでした。

  • テクログ

    cURL

    cURLは、さまざまなプラットフォームで使用可能ですが、私はPHP以外での使用経験が無いため、PHPでのcURL使用のみについて書いていきます。 使用方法としては別のシステムとのインターフェースに使ったり、 file_get_contentsが使用できない環境で代わりに使用したりなどといった形で使用してきました。 という事でそれに沿って説明していきます。   cURLは以下の4つのコマンドのみで実行できます。 ・curl_init ・curl_setopt ・curl_exec ・curl_close curl_initで初期化して curl_setoptでオプションにより動作を設定し、 curl_execで実行して、 curl_closeで終了という流れです。 以下はfile_get_contents的に使用する場合の例になります。 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://core-tech.jp/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $contents = curl_exec($ch); curl_close($ch); $contentsにhttps://core-tech.jp/のページソースが入ってきます。 レンタルサーバーなどfile_get_contentsが使用できない環境で代用できるかも。  さらにはログインが必要なページの取得も可能です。 もちろん、IDとパスワードがわかっているページが限定です。 Basic認証 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://core-tech.jp/target.html"); // 実際にはありません curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$id:$pass"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $contents= curl_exec($ch); curl_close($ch);   cookie認証 これは少し面倒で2回呼ばないといけなくて、 最初にログインページからcookie情報をtmpというファイルに保存し、 次にcookie情報を引き継いで取得したいページから取ってくるといった感じになります。 $fp = fopen("tmp", "w"); $params = array('id' => 'id', 'pass' => 'pass'); $ch = curl_init();  curl_setopt($ch, CURLOPT_URL, "https://core-tech.jp/login.html"); // 実際にはありません curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  curl_setopt($ch, CURLOPT_POST, TRUE);  curl_setopt($ch, CURLOPT_POSTFIELDS, $params);  curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie"); curl_setopt($ch, CURLOPT_WRITEHEADER, $fp);  $output = curl_exec($ch);  curl_close($ch);  fclose($fp); $ch = curl_init();  curl_setopt($ch, CURLOPT_URL, "https://core-tech.jp/target.html"); // 実際にはありません curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_COOKIEFILE, "tmp"); $results[$pageid] = curl_exec($ch); curl_close($ch);   インターフェースとして使用する場合 通信相手にもよりますが、POSTで値を渡して結果を得るという流れの例になります。 今回はpostでdata1とdata2を渡すと結果が得られるという仕様だとします。 $post = "data1=".urlencode("data1")."&data2;=".urlencode("data2"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://core-tech.jp/target.html"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $contents= curl_exec($ch); curl_close($ch);   オプションについては以下のサイトに資料があります http://php.net/manual/ja/function.curl-setopt.php ちなみに全ての例で使用しているCURLOPT_RETURNTRANSFERについては 「結果を文字列で返す」という設定になります。 それ以外のオプションも多数あるので使用するケースによって使い分けしてください。   複数のサイトに対して一括取得する場合はcurl_multi_initを使用します。 // 対象サイト $url_list = array("https://core-tech.jp/", ); // マルチハンドルの用意 $mh = curl_multi_init(); // cURLハンドルの用意と、マルチハンドルへの登録 $ch_list = array(); foreach( $url_list as $url ) {  $ch_list[$url] = curl_init($url);  curl_setopt($ch_list[$url], CURLOPT_RETURNTRANSFER, TRUE);  curl_multi_add_handle($mh, $ch_list[$url]); } // 一括で通信実行、全て終わるのを待つ $running = null; do {  curl_multi_exec($mh, $running); } while ( $running ); // 実行結果の取得 foreach( $url_list as $url ) {  // ステータスとコンテンツ内容の取得  $results[$url] = curl_getinfo($ch_list[$url]);  $results[$url]["content"] = curl_multi_getcontent($ch_list[$url]);  // Curlハンドルの後始末  curl_multi_remove_handle($mh, $ch_list[$url]);  curl_close($ch_list[$url]); } // マルチハンドルの後始末 curl_multi_close($mh); これは取得するサイトの数が多すぎると取得自体ができなかったり、 動作が安定しませんでした。 やり方が悪かったのかな? と、この辺りが私が知っているcURLの全てになります。

  • テクログ

    jQueryとJavaScript4

    前回では、入力した文字を精査して、 数字3桁が入力されていれば終了していました。 今回はそこから先の処理を考えたいと思います。 処理の内容としましては、 ・入力した文字を別の要素に表示 ・ランダムで3桁の数字を生成 ・入力した文字を配列化 ・ランダム数字と入力文字の比較 になります。 【履歴】 function testMethod(Number) { // 入力値を配列化 ArrNumber = Number.split(''); for(i=0; i<3; i++) { // ランダム数字の配列に入力文字がある場合 if($.inArray(ArrNumber[i], ArrAnswer) != -1) { } } // 履歴に追加 $('#history').append(Number+''); // 入力値をリセット $('#number').val(''); } function testMethod2() { ArrAnswer = new Array(); for(i=0; i<3; i++) { // 0~9の数字を生成して、文字に変換 ArrAnswer[i] = Math.floor(Math.random()*10)+""; // 同じ数字を使用している場合、再設定 if(ArrAnswer[i] == ArrAnswer[i-1] || ArrAnswer[i] == ArrAnswer[i-2]) { i--; } } } $(function(){ // ランダムで3桁の数字を生成 testMethod2(); $('#number').keypress(function(e) { // 省略 }).keyup(function(e) { // 省略 // 下記追加 testMethod(Number); }); }); 「入力した文字を別の要素に表示」は、 jQueryのappend()メソッドを使用してします。 指定したセレクタの末尾に引数で指定した文字列を追加します。 $("セレクタ").append("文字列"); 「ランダムで3桁の数字を生成」は、 JavaScriptでMath.random()とMath.floor()メソッドを使用しています。 Math.random()は、0.0以上1.0未満の乱数を生成します。 Math.floor()は、小数点以下の値を切り捨てます。 0~9までの数字を生成する場合は、 Math.floor(Math.random()*10); 「入力した文字を配列化」は、 JavaScriptでsplit()メソッドを使用しています。 今回は区切り文字を「''」として、桁ごとに配列に入れています。 文字列.split("区切り文字"); 「ランダム数字と入力文字の比較」は、 jQueryのinArray()メソッドを使用しています。 配列に値があれば、その位置を返し、 配列に値がなければ、「-1」を返します。 $.inArray(比較する値, 比較する配列) 次回は、ゲームのHTMLとJavascriptを記載します。 では、また来月お会いしましょう。。。

  • テクログ

    新しい技術

    こんにちは。ぬまっちです。今日実は28歳の誕生日を迎えました!!!今回は非常に有名なUnityについて。新しい技術を学ぶ必要があると思い、技術ブログに掲載致します。UnityはWii、Xbox360、PlayStation 3、Mac、Windowsなどゲームを楽しむ機器向けから、Webブラウザで遊ぶゲーム、あるいはiPhone/iPod Touch/iPad、Android向けのバージョンも存在します。目標Unityでアングリーバード的な簡易ゲーム実装 まずUnityをローカル環境にインストールしてください。■プロジェクト名TestBlockFile→New Projectフォルダー構成■共通部品の配置に関してはInspectorのTransformにてPositonのX,Y,Zの数値を変更してください。CubeGameObject→Create Other→CubePlayerGameObject→Create Other→SphereCube PlayerともにComponent→Physics→Ragidbodyにて物体の重さを設定してください。Projectフォルダー構成Scriptフォルダ以下にjsを埋め込みます。Scriptで右クリック→Create→JavascriptPlayerController,Triggerという名前のjsファイルを作成します。 PlayerController.jsvar player : GameObject;var shootPowerX : float = 400.0;var shootPowerY : float = 400.0;function Update () {    if ( Input.GetButtonDown("Fire1") ) {        player.rigidbody.AddForce(shootPowerX, shootPowerY, 0);    }}Trigger.jsfunction OnGUI () {    if ( GUI.Button(Rect(10, 10, 50, 50), "Reset") ) {        Application.LoadLevel("TestBlock");    }} jsが完成したらProjectのjsファイルをHierarchyの同名ファイルにドラッグしつなぎます。Point light物体に照明をともします。GameObject→Create Other→PointLight以上ができましたら再生ボタンを押します。 TestBlock ダウンロードファイルを置いておきます。  

  • テクログ

    PHPの小技

    プログラマー:「ディレクター♪ 言われていたサイト出来上がりましたよ♪」ディレクター:「あれ?予定より早くない?」プログラマー:「こういうサイトは慣れてきましたからね。ささっと作れちゃいました。」ディレクター:「ありがとう。ちょっと確認してみるよ。」・・・・ディレクター:「ねぇ・・・超遅いんだけど・・・。作り直してくれないと納品出来ないから・・・」プログラマー:「アタヽ(´Д`ヽ ミ ノ´Д`)ノフタ」 いくつものサイトをPHPで作成していると、こんな事が起こる事があります。ついつい慣れだったりパッと思いついた方法でコードを書いていってしまうと陥る罠ですね。という事で、納期間際に、アタヽ(´Д`ヽ ミ ノ´Д`)ノフタ しない為の小技を発見したのでメモ書き程度にご紹介いたします。1、 require_onceは激重2、preg_replaceよりもstr_replace()の方が速い。 しかし!!!!    str_replaceよりもstrtr()の方が4倍も速い!3、$row[id]よりも$row["id"]の方が7倍速い!4、for文の中で($i=0; $i < count($array); $i)のように、count()関数を使うと、毎回count()が呼ばれるので遅くなる。5、staticメソッドが使えるなら使った方が良い。速度は4倍に!!!こんな事に注意をして作っておくと・・・・・・・・ディレクター:「確認したよ!軽いし良いね。さくっと納品しちゃうよ。ありがとう。」プログラマー:「(^^ゞ」こんな感じで幸せになれますよ♪小さい事かもしれませんが、塵も積もれば何とかです。小技を有効活用しちゃいましょう。※追記2012/10/31の記事をもう少し詳しく書いてみたのですが、若干違う部分があるな~・・・ どっちが正解なんだろうか・・・・