androidでビルドに失敗した時

kishidaです。また久しぶりの投稿になります。

androidプロジェクトをビルドをした時に下記のようなエラーが出ました。

android.content.res.Resources$NotFoundException: Unable to find resource ID

リソースに登録されていませんよ、的な内容なのですがイマイチ原因がわからなくて悩みました。
原因はandroid SDKバージョンが古いものがあることでした。少し前に一部アップデートしていたので大丈夫だと思っていたんですが漏れていたようで・・・

これからは多少時間がかかっても全て新しくするようにします。

そんな反省の記事でした。

カテゴリー: 未分類

socket.ioについて

kishidaです。今年初投稿ということであけましておめでとうございます。といっても既に2月なので遅すぎる挨拶ですが。

今回はsocket.ioを使用してチャットの機能を作ったので使用感とメモ書きを書いていこうと思います。

server.js

var server = require(“http”).createServer(function(req, res) {
res.writeHead(200, {“Content-Type”: “text/html”});
var output = fs.readFileSync(“./index.html”, “utf-8”);
res.end(output);
}).listen(3000);
var io = require(“socket.io”).listen(server);
io.sockets.on(“connection”, function(socket) {
//index.htmlからhogeというリクエストを受け取る
socket.on(“hoge”, function() {
/*****処理*****/
//index.htmlにhogeというリクエストを投げる
socket.emit(‘hoge’, socket.id);
});
//終了時のイベント
socket.on(“disconnect”, function() {
/*****処理*****/
});
});

index.html

var socketio = io.connect(‘http://localhost:3000’);
//server.jsへhogeというリクエストを投げる
socketio.emit(“hoge”);
//server.jsからhogeというリクエストを受け取る
socketio.on(“hoge”, function(id) {
/*****処理*****/
});
//socketio.disconnect(); //切断

基本はemit()でリクエストを投げてon()でリクエストを処理する認識でいいと思います。
接続終了時にはdisconnectのリクエストが発生し、index.htmlで切断する場合は.disconnect()を使用します。

処理の流れがシンプルで作るだけなら非常に便利だと感じました。ただ要件によってはやり取りをするメソッドが増えてトレースが大変になりそうなのでなるべく冗長を意識する必要がありそうです。

memo

.disconnect()の後自由なタイミングで再接続したい場合

socketio.connect();

で再接続できる。

 

リクエスト名に「connect」を使用できない
index.html

socketio.emit(“connect”);

server.js

socket.on(“connect”, function(data) {
console.log(‘connect’);
});

予約語の類だと思うのですが今のところリクエストも発生していないためわかったらまた報告します。

 

参考
http://www18407ue.sakura.ne.jp/wordpress/?p=200

カテゴリー: javascript, mysql, server

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