スマホアプリのタブ数の表示上限

スマートフォンアプリ制作の仕事をやっていると、
盛り込みたい機能が沢山あり、
それぞれの機能をタブ(tabGroup)で切替表示したいと依頼がある。

しかし、iPhone、Androidそれぞれでタブ数には表示上限がある。
iPhoneでは5つが表示上限だ。
この表示上限を超えると、
下記の赤枠のように、「・・・(more)」が出てしまう。

more

この「more」はユーザ受けが良くない。

一方、Androidは端末に依存し、
XperiaのSOL24 等では5つあるが、ほとんど4つの表示上限だ。
表示上限を超えると、下記の赤枠のタブバー(tabBar)が横スクロールし、隠れていたタブの選択ができる。

Android tabGroup

この横スクロールもユーザ受けが良くない。

そのため、事前に表示上限を超えないよう、仕様変更してもらうか、
タブバーを非表示にして、オリジナルで作成する方法になりそう。。

同一画面でバージョンの異なるjQueryを共存させる方法

Web制作の仕事をやっていると、
動きのある機能を導入したいと御客様から要望がある。
しかも、高度な技術が必要なのに、おカネも期間も掛けずにというワガママ付き。。
そんな難題の要望に応えてくれるのが「jQueryを利用したツール」なのだ。

しかし、そんな便利なツールだが、当然問題もいくつかある、、
その問題の一つに、
同一画面で、動きのある機能が複数ある場合だ。 ※ 特にTOPページで
問題が発生した状態としては、片方(もしくは両方)の機能が動作しないこと。
※ 前提として、どちらか片方のみの導入ではうまくいっている

その動作しない原因の多くは、

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
  $・・・
</script>

というように、異なるjQueryのバージョンが「1.7.1」と「1.9.0」で共存しているためだ。
まず、簡単な解決方法としては、新しいバージョンのみ有効とし、
バージョンの古い「1.7.1」のjQueryをコメントアウトしてみる。
※ 「jQueryを利用したツール」ではなく、

<!-- script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script -->

のように、こちらのみコメントアウトする。
これで解決すれば儲けもの。
しかし、解決する可能性はそれほど高くはないのが現状。。
そこで下記を試してもらいたい。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    var $171 = $.noConflict(true);
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$171(document).ready(function(){
  $171・・・
</script>

こちらのように修正するとそこそこ解決するはず!!

それでも まだ解決されない方は、下記を試してもらいたいが、
この話は別の機会に

(function($){
// ライブラリ自体のJavaScript
})($171)

CentOS7でのezmlm-idx

qmail+ezmlm+ezmlm-idxでメーリングリスト。

CentOS7になってまで使っている人は少ないだろう。

が、あえて、この話題。備忘録的な意味も含めて。

 

この組み合わせはCentOS7でも使用可能。しかし、そのままでは使用出来ない。

ezmlm-idxが悪さをしており、ezmlmが一切動作しないのである。

 

原因は、ezmlm-idxにある「sub-std.c」。

「FATAL」と「USAGE」という文字列変数が定義されておらず、

Could not load plugin /usr/local/lib/ezmlm/sub-std.so: /usr/local/lib/ezmlm/sub-std.so: undefined symbol: FATAL

なんてエラーを吐き出す。なぜ、コンパイル時にエラーを出さないのか、小一時間程、問い詰めたい。

 

解決方法は、下記のように「sub-std.c」に「FATAL」と「USAGE」という文字列変数を定義してあげればいい。

const char FATAL[] = “sub-std: fatal: “;

const char USAGE[] = “sub-std: usage: “;

これで正常に動作する。なぜ、コンパイル時にエラーをd(ry。

 

もし、CentOS7でqmail+ezmlm+ezmlm-idxを使う際は参考にしてほしい。

うちもそろそろpostfixに移行しないと。

 

次回は、kickstartでNetworkの設定をする件について記載する予定。

 

 

レンタルサーバでCentOS7を使いたい場合

ぴっとさ~ぶ

CentOS7について

CentOS7について書いてよ!って言われたから書いてみようと思う。

弊社のレンタルサーバに導入可能なOSにCentOS7が追加された。

詳細はこちら→ http://www.pitserv.jp/

 

導入検証は1ヶ月以上前には完了していたが、

上記のホームページの修正が追いつかず、公開までに時間がかかった。

今後、CentOS7に関する技術情報を書いていきたいと思う。

 

ネタはそこそこ揃っている。はず?

MySQLの文字化け対応

下記のような仕様で管理しているDBと表示の際の文字コードが異なる場合がよくある。

DB:UTF-8
表示:Shift-JIS (プログラムソースコード:Shift-JIS)

その場合、日本語の文字化けが発生するので、回避策として下記の変換をしているが

mb_convert_encoding($mojibake, ‘SJIS’, ‘UTF-8′);

「髙」や「﨑」の特殊文字があると正しく変換されないため、おすすめできない。
しかし、下記を実施すると

mb_convert_encoding($mojibake,’SJIS-win’, ‘UTF-8′);

正しく変換されるがプログラム修正が多くなる場合がある。
そこでおすすめしたいのが、「set names cp932」だ。
データ取得前に、SQLで実行するだけと、プログラマにやさしい
これは「set names sjis」と実行し文字化けた場合にも有効なのだ。