2014年の仕事納め

本日で今年度の営業も終わりですので今年一年を振り返ってみようと思います。
本年度は大きな請負の仕事をメインにやっていて、まだ終わっていませんが、来年の早いうちに無事納品できそうな気配です。
また今年はアルバイトのPGを1人増やしました。

開発環境の見直し

人数が増えたことにより複数人での開発方法のノウハウが必要になり、誰が書いたコードでも一定の水準をキープするために、gitを導入しました。
git導入したことにより、変更点をピックアップされ、誰が、いつ、何を、変更したかが明確にすることができるようになりました。
そしてその変更点がピックアップされて、他のグループメンバーに見られるためか、自然とソースコードの質も上がり、綺麗なコードが増えていきました。

またgitを導入したことで、どうせならブランチを作って開発したい。ブランチを作るならローカル開発だろうということで、VagrantやVirtualBoxで各自がローカルに仮想OSを作って開発し、できたものをプルリクエストで実装させる方法もやってみました。

やってみたところソースコードの質の向上と、グループメンバー間の情報共有も捗ったのは良い反面、手間が結構かかるところがデメリットではありますが、属人化していた仕事を標準化していくためには、効率がさがるのはしょうがないと思うのでやるしかないです。

2015年は

2014年は請負が多かったので、新しい技術やトレンドをあまり追いかけれませんでした。
はやりを追いかけて仕事をすると、そのはやりが一過性だった時にダメージ大きいので、取捨選択が難しいところですが・・。
来年の予定は、自社のコンテンツを制作しながら、効率的な業務フローを作っていければと考えています。
ネット業界は進歩が早く、この先がどうなるも予測しにくいですが、トレンドを抑えながら取り入れて、しっかりと着いていきたいところです。

カテゴリー: 未分類

クラウドOSのネットワーク設定

Device eth0 does not seem to be present, delaying initialization

クラウドサーバのクローンを新たに作成してネットワークに接続しようとすると、上記のようなエラーになりました。
ifconfig してもeth0がありません。調べてみると、

/etc/udev/rules.d/70-persistent-net.rules

を変更してrebootするとの事だったんですが、そもそも70-persistent-net.rulesがありませんでした。

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
# HWADDR=9c:a3:ba:25:**:**
NM_CONTROLLED=yes
ONBOOT=yes
BOOTPROTO=static
IPADDR=133.242.***.***
TYPE="Ethernet"
NETMASK=255.255.255.0

でHWADDRが書かれてあったのでコメントアウトしてrebootするとつながるようになりました。

カテゴリー: server

顔文字用の<>のエスケープについて

kishidaです。htmlメールで(・ω<)などの顔文字を使用しようとして「<」の部分がhtmlタグとして認識されてしまい正常に表示されないことがあります。 そこで、顔文字をなるべく表示するためにhtmlタグではない<>を特殊文字に置換することにしました。
htmlタグの判別条件として「<」と「>」が対になっているかどうかで分けることにします。

function escTag($str=''){
  if(!$str){
    return false;
  }
  //文字列を分割
  $m = explode('<',$str);
  $str = $m[0];
  foreach($m as $key=>$value){
    if(!$key){
      continue;
    }
    //配列内に対になる>があればエスケープしない
    if(strpos($value,'>')===false){
    $str .= '<';
    }else{
      $str .= '<';
    }
    $str .= $value;
  }

  //文字列を分割
  $m = explode('>',$str);
  $text = '';
  foreach($m as $key=>$value){
    $text .= $value;
    if($key==(count($m)-1)){
      break;
    }
    //配列内に対になる<があればエスケープしない
    if(strpos($value,'<')===false){
      $text .= '>';
    }else{
      $text .= '>';
    }
  }
  return $text;
}

echo escTag('
(・ω<)
');

もっと方法がありそうな気もしますがとりあえずはこれで行きます!

カテゴリー: html, php

iOSで文字の大きさが変わってしまう件

こんにちは、TomoTomoです。

今回は、iOSで少し変わった事象が起きてしまう件についてです。

 

最近あるサイトのスマホサイトを作っていたのですが、
CSSで指定しているのに、一部の文字だけ指定している大きさよりもかなり小さくなってしまっているということに気がつきました。

何でだろうと悩んでいるうちに、iPhoneやiPadでは文字を自動調整してしまうという情報が・・・。
そんな機能必要ないのに。と思いながらも、対処法を探してみると・・・いい方法がありました!

 

その方法は、
文字が小さくなってしまうタグのCSSに、

-webkit-text-size-adjust: 指定したい文字の大きさ;

というように、改めて文字の大きさをアジャストしてあげると、文字の大きさが思い通りになりました。

iPhoneで見てみると、思ったような大きさになっていないということがあれば、ぜひこの方法を試してみてください!

 

スマホのサイトを作っていると、「なんで?」ということがよくあるので、また新たな発見がありましたらお知らせしたいと思います。
それでは、また!

カテゴリー: css, html

【jQuery】~以外の要素をクリックまたはタッチ

皆さん、初めまして。
TomoTomoと申します。
ちなみに趣味は、サッカー、バドミントン、釣り、お酒、などなど結構幅広いです。
以後、お見知りおきください!

さてさて、
このたびは、jQueryで指定の要素以外をクリックしたときのイベントを取得するのに少し苦労してしまったので、メモをしておこうと思います。

指定の要素以外というのは、一般的に『.not(),:not()』というやり方で取得できると思うのですが、これがなんでかうまく反応してくれなかったのです。
そこで、他にいいやり方がないか探してみたところ・・・いいのがありました!

早速、コードを書いてみると、

        $(document).click(function(event) {
            if (!$.contains($("#hoge")[0], event.target)) {

            }
        });

という感じになりました。

キモは、

            if (!$.contains($("#hoge")[0], event.target)) {

            }

のところです。
この『.contains()』というメソッドは、引数がDOM要素になってしまうのですが、
第1引数の要素が反応したイベントに含まれているかどうかを判定してくれるようです。
まさかこんな都合のよいメソッドがあるとは・・・。

このやり方は、モーダルウィンドウやポップアップを閉じるときなどに便利ですよ!
もっと詳しく知りたいという方は、参考元のサイトも載せておきますので、こちらも参考にしてみてください。
http://s3pw.com/milestoner/2013/06/jquery-tips-for-closing-popup/

 

ちなみにスマホやタブレットの場合は、イベント取得のところを

.on('click touchstart', function() {
}

とした方が正確に反応してくれますよ!

 

それでは、また!

カテゴリー: html, javascript

メール転送時に謎の文字化け

kishidaです。
メールを受信し各所へ送信する処理を作っていました。
たまに転送先で不明な「?」文字が混ざっていることがありその原因がわかったのでまとめます。

結論から言いますと「​」が原因でした。
「」の中を開発者ツール等で見てもらえればわかりますが&#8203 ;と書かれています。

なんの特殊文字かというのは省略しますが取得したメールの文章にこいつが混ざっていたのが原因のようでした。

なので保存する際にこの文字を置換してやることで解決しました。

カテゴリー: html, php

formのactionを指定しないと携帯で動かない

お久しぶりです。kishidaです。
実に4ヶ月ぶりの更新になります。ここのところ忙しかったためなかなか書く時間が取れませんでした。
というのは建前で正直なところ忘れていました。ごめんなさい

今回はタイトルの

formのactionを指定しないと携帯で動かない

についてです。
今までformを書くときは

と記述し現在のページへのactionという認識でした。
しかし実際はaction=”にしてしまうと動作環境次第でaction先が変わるようでよろしくなかったみたいです。

action先はきちんと指定してあげましょうというお話でした。

カテゴリー: html

Y年m月d日とY-m-dの両対応のタイムスタンプの取得方法

お久しぶりです、kishidaです。

日付のY年m月d日 H時i分s秒とY-m-d H:i:sの両方に対応したタイムスタンプの取得方法です。
Y年m月d日 H時i分s秒をタイムスタンプに変換するメソッドは無いみたいなので置換してから変換してやることにしました。

$date = date('Y年m月d日 H時i分s秒');
$newDate = rtrim(str_replace(array('年', '月',), '-', str_replace(array('時', '分'), ':', str_replace(array('日', '秒'), ' ', $date))));

echo strtotime($newDate);
カテゴリー: php

Fuelphp : class 'smarty' not found

kishidaです。

FuelphpでSmartyを使用しようとしてclass ‘smarty’ not foundが表示されました。

smartyの設定は以下を参考にさせていただきました。
参考URL http://piyopiyocs.blog115.fc2.com/blog-entry-633.html

設定漏れはない筈・・・多分。

解決
fuel/packages/parser/config/parser.phpのファイルに以下の行を追加することで使えるようになりました。

‘View_Smarty’ => array(
‘include’ => APPPATH.’vendor’.DS.’Smarty’.DS.’libs’.DS.’Smarty.class.php’, // <— この行
‘auto_encode’ => true,
‘delimiters’ => array(‘left’ => ‘{‘, ‘right’ => ‘}’),

参考 http://www.doumeishi.me/wordpress/?p=35

カテゴリー: php

android(titanium) : webviewでページ遷移する際にviewが切り替わるのを防ぐ

kishidaです。

今回はタイトルの通りでtitaniumのwebviewでリンクをタップした際にwebview内で開くのではなく新しくviewが生成されることが多々ありました。

広告の表示など既存のviewの設定は新しいviewには反映されないためこれではよろしくないということで色々悩みながらも解決しました。

原因

新しいviewが生成されていた原因はタップしているリンクの設定にあるみたいでした。
PCのブラウザからリンクをクリックすると新しいページで開くようになっていたのでそれが影響していたみたいです。

解決

開いているwebviewに対してページを読み込んだ時にリンクの設定を新しくページを開かないように上書きしました。。

webview.addEventListener('load',function(){
  var content = webview.evalJS("document.body.innerHTML = document.body.innerHTML.replace(/target="_blank"/gi, '');");
});

カテゴリー: Android, Titanium, 未分類