2014-11-12

筋トレでプログラミングスキルが上がってワロタ



なんかぁ こないだぁ 気まぐれで筋トレとかしててぇ

そしたらぁ 俺わかっちゃったんスけどぉ

筋トレってぇ マジつまんなくてぇ 

俺とかマジビビってぇ
これやべえってなってぇ

だって超ヤバイんスよ すげぇ暇なんスよぉ まじで退屈でぇヤバくてぇ

そんで俺もぉ すぐやめればいいのにぃ

あんまりヒマだからぁ

ラジオとか音楽聴いたりしてぇ 気をまぎらわしながらやってたんスよぉ

結局ぅ
身体の疲れはいいんスけどぉ 精神的に限界みたいな感じになってぇ
退屈で15分とかが限界だったんスけどぉ筋トレはぁ

でもそのあいだぁ ずっとヒマだって思っててぇ 開放されたくてぇ
それがぁ 別なことをやるモチベーションとしてみたときにぃ 
マジで効果ハンパなくてぇ

筋トレから開放されてコーディングできる状況がぁ
嬉しくてしょうがない感じになっちゃったって云うんスか
なんつうかヤバくてぇ

したらぁ 超ぉーコーディングはかどってぇ
まじで集中力とかパなくてぇ
これヤバくねってなってぇ

そんでぇ 帰宅してコード書く前にぃ
筋トレする習慣ついちゃったんすよねぇ
今でも筋トレとか大体15分で飽きちゃうんすけどぉ

ゆってもぉ ちょっと考えてみたんすけどぉ
コードは冴えるしぃ
身体も引き締まるしでぇ

メリットしかなぃっつうかぁ
結構イケてる習慣だったりすんじゃないんすかねぇ




今回のAndroidプロジェクトでハマったこと学んだこと7つ


1.HashMapの代わりにSparseArrayを使う

keyがintのHashMapを使用したら以下の様なWarningがでた。
Use new SparseArray<Bitmap>(...) instead for better performance

パフォーマンスがイイカンジだからSparseArrayを使ってねと言っている。
SparseArrayは、keyにintしか取らないことで、
メモリ使用量やパフォーマンスの点でHashMapより有利だと謳っている。
valueがBoolean, Integerのときは更に
SparseBooleanArray、SparseIntegerArrayを使うこともできる。
リソースにやさしいデータ型でステキ。

SparseArray
http://developer.android.com/reference/android/util/SparseArray.html

AndroidのSparseArrayは本当に速いのか測定してみた
http://thinking-megane.blogspot.jp/2012/06/androidsparsearray.html

SparseArrayメモ
http://noxi515.blogspot.jp/2012/02/sparsearray.html



2.ScrollView内のListViewの高さが1行ぶんしかない

ScrollView内にListViewを表示させるということをやった。
リストには3行の要素を含んでいたが、いざ表示させてみると
リストは1行分の高さしかなく、2行目以降の要素が隠れてしまい表示されない。

後で知ったが、そもそもこういったViewの組み立て方がよろしくない様子。
とはいえリストの要素分の高さで表示しなければならない。
今回は、以下の様なコードで実現した。

int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
    View item = adapter.getView(i, null, listView);
    item.measure(MeasureSpec.UNSPECIFIED,
        MeasureSpec.UNSPECIFIED);
    totalHeight += item.getMeasuredHeight();
}
ViewGroup.LayoutParams layoutParams = listView.getLayoutParams();
layoutParams.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(layoutParams);
 
ScrollView内にListViewを入れてはいけない
http://blog.yagni.jp/archives/294
Android: ScrollView 内にある ListView の高さが 1行になるのを回避する
http://bigchu.com/android-scrollview-listview-line-1-measure.html



3.AQueryをFragment内で使う

AQueryは、Androidアプリ内でJQureyのようにViewを操作できるライブラリ。

シンプルなActivityのときは

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.unko);
    AQuery $ = new AQuery(this);

}

のようにして、setContentView()したViewを扱うことができる。
Fragment内では明示的にviewを指定すればOK。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_unko,
        container, false);
    AQuery $ = new AQuery(view);
    return view;
}
AQueryを使って書くコードは簡潔で楽しい。



4.drawableRightの便利さ

テキストの隣にアイコンを添えて表示したいことがある。
このようなとき、普通ならTextViewとImageViewの2つを並べれば実現できる。

しかし、drawableRightを指定すれば、
ImageViewを使わずにこれを実現できてしまう。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableRight="@drawable/icon_hoge"
    android:text="@string/hoge_text" />


ちなみにdrawableLeft,  drawableTop, drawableBottomもあり、
drawablePaddingを使った位置調整も可能。
TextViewに限らず、Buttonなどでも使える。ビュー定義がスッキリして便利。

ボタンにアイコンを表示する
http://neta-abc.blogspot.jp/2012/04/blog-post.html



5.bitmapImageが自動でリサイズされないようにする

bitmapImageで画像を描画したが、期待した大きさで表示されない。
若干拡大されて表示されてしまう。

これを回避するためには、画像を読み込むときに自動リサイズを無効にすればよい。

Options options = new BitmapFactory.Options();
options.inScaled = false;
BitmapFactory.decodeResource(
    getContext().getResources(), R.id.hoge_img, options);
I don't want Android to resize my bitmap Automatically
http://stackoverflow.com/questions/6805355/i-dont-want-android-to-resize-my-bitmap-automatically




6.HTMLに%が含まれるものをloadDataするとAndroid2.xでwebViewが表示されない

これまでは、本問題に遭遇した際には
%を%25のようにURLエンコードすることで対応していたが、
今回の開発ではそれでは対応しきれず、loadDataWithBaseURLを使うことで根本的に解決。
webView.loadDataWithBaseURL("http://hoge", htmlString,
"text/html", "utf-8", null);
% -> %25のようにURLエンコードする必要はない。
また、http://hogeの部分はダミーURLで構わない。

Android: WebView unable to show '%' percentage sign
http://stackoverflow.com/questions/5097483/android-webview-unable-to-show-percentage-sign



7.webView内のiframeからイベントが上がってこない

webView内のiframe内にリンク画像があり、
タップするとリンク先ページを外部ブラウザに開くということをやった。
が、
実際にタップしてみると、
iframeの中だけで該当ページへと遷移してしまう。
これでは、遷移先ページの表示があまりに小さくて意味が無い。

これの対策としては、webView側で、リンククリックのイベントを検知して、
iframe内ではなく、外部ブラウザでページを表示するようにすればよい。
このときに使うのがwebViewのshouldOverrideUrlLoading()メソッドだ。

ところが、webView内でのリンククリックはイベントとしてwebViewに上がってきて、
shouldOverrideUrlLoadingでハンドリングできるが、
webView内のiframe内でのリンクの場合は、クリックイベントが上がってこない。

クリックイベントが上がってこないとどうしようもなさそうに見えるが、onLoadResourceを使うことで対応できる。
onLoadResourceは、webView内で発生する全てのhttpリクエスト毎にコールされるイベントハンドラで、
画面遷移時のみならず画像, css, jsの読み込みなど、すごい勢いでコールされまくる。
なので、あまり重い処理を書くことは避けたい。
今回は、iframe内のリンクURLの時だけ外部ブラウザでページを開くようにした。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onLoadResource(WebView view, String url) {
        // iframe内のリンクURLのときだけ処理する
        if (url.equals("http://in.iframe.url/")) {
            Uri uri = Uri.parse(url);
            Intent i = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(i);
        }
    }
});




まとめ

為せば成る
きっとあなたの案件もなんとかなる!

2014-08-19

シェルの魔法

スゴ怖い!

$ ls
./
../
何もない状態。

$ touch a b c
$ mkdir dir1 dir2
$ ls
./
../
a
b
c
dir1/
dir2/
ファイルとディレクトリを作成。

$ rm *
/usr/bin/rm: cannot remove directory `dir1': Is a directory
/usr/bin/rm: cannot remove directory `dir2': Is a directory
$ ls
./
../
dir1/
dir2/
rmで全削除。。。が、オプションをつけていないので、ディレクトリは残る。

$ touch a b c
$ ls
./
../
a
b
c
dir1/
dir2/
消えたファイルを復活。

$ echo hoge > -rf
$ ls
-rf
./
../
a
b
c
dir1/
dir2/
もうひとつ、ファイルを作成。

$ rm *
再度、オプションなしでrm。

$ ls
-rf
./
../

2014-08-03

胃袋わしづかみ!オトコを落とせるモテカレーの作り方




モテカレー「男落とし」の特徴



  • 肉は正肉ではなく、牛スジを使う。 トロトロの食感と甘い脂がカレーと混ざり合う。
  • じゃがいもの代わりに大根を使って、さっぱりジューシーに仕上げる。
  • 具の大きさが尋常でない




作り方(5皿分)


大事なことは、たった1つだけ。
それさえ間違えなければ、必ずおいしく作ることができる。



切る


牛スジ(300g)


名前の通りスジばっていて、切るのがなかなか大変だが、
カレーができあがる頃には驚くほど柔らかく、トロトロになっている。
また、煮込んでいるときに甘い脂が出て、カレーをより美味しくしてくれる。



ダイコン(1/2本)

食べるときにジューシーさが引き立つように、
かなり大きめ・厚めにカット。
牛すじのトロミと甘みに、サッパリとしたダイコンがバランスよくマッチしてくれる。



ニンジン(2本)


ゴロッと大きくカット。
牛スジの甘みをいっぱい吸い込んでくれる。



タマネギ(2玉)


ひとつはみじん切り用。うまみをカレーに溶けこませる。
もうひとつは、具として食べる用。これも大きめにカット。



じゃがいもは入れない


じゃがいもの粉っぽさ、ザラツキに牛スジの甘みと脂が絡まると、
しつこい味になってしまう。
ダイコンのジューシーさでサッパリ感を出すのがポイント。



炒める



サラダオイルとタマネギのみじん切りを入れる。
みじん切りされたタマネギは、カレーの中のなかに溶けてうま味となってくれる。
具のためのタマネギは後ほど入れる。



タマネギがあめ色になったら



牛スジは、赤みを取る程度に軽く炒める。
ここから一気に、ニンジンを入れて………



ダイコンを入れて……




タマネギを入れる。
タマネギは形崩れしやすく、できあがりの時に具として残したいので、
炒めたりせず最後に入れる。(溶けてなくなっちゃうから)



煮る ★ここが一番大事!



いつもこのカレールウで作るが、お好みで変えてもらって構わない。




なんかブイヨンペーストがついてきてて本格感があってステキ。



ダイコンから大量の水が出るので、
パッケージに書いてある通りに水を入れると、
味のないカレーができあがってしまう!
このカレールウの場合なら、450mlで充分だ。



ブイヨンペーストを入れて10〜15分ほど煮込む。
ダイコンの水分で水かさがどんどん増える。



カレールウを入れてさらに15分煮込むと、いったん完成。
もちろん充分おいしいが……



さらにおいしく

もし真空保温調理鍋であれば、
さらに数時間、保温状態で寝かせることができ、 牛スジはさらにトロトロになり、具材は味が染みこんだカレーになる。


↑でもいいが、実際にお店に足を運んで家庭にあったものを選ぶのがいいと思う。
使わなくても充分においしいので、問題ないっちゃない。


できあがり



うまい(確信)

このカレーの「男の胃袋わし掴み力」はハンパじゃない。
男を魅了する力のことを女子力というのなら、まさに圧倒的女子力といっていい。
ぜひ一度試してみてほしい。



私も作りました!



「お待たせ!カレーしかなかったんだけどいいかな?」

2014-08-02

mvにサヨナラ!renameコマンドのイケメンぶりが半端ない




なんですかこのイケメンコマンドは

ファイル名の変更、ファイルの移動と言えば mvコマンドだ。初歩の初歩だ。
複雑なリネームはパイプやシェルスクリプトで実現するものだという思い込みから、
renameというイケメンコマンドを知らずにいた!なんてもったいない!



とても簡単、そしてステキすぎる実行結果

$ ls
file01.txt
file02.txt
file03.txt
file04.txt
file05.txt

$ rename 's/.txt/.csv/' *.txt

$ ls
file01.csv
file02.csv
file03.csv
file04.csv
file05.csv

これだけで、すべての .txtファイルの拡張子変更ができてしまった!

見ての通りrenameコマンドは、複数ファイルを一括でリネーム、移動するときに力を発揮する。
コマンドの記法は、以下の通り。

rename {正規表現} {処理対象}

処理対象のファイル、ディレクトリをどのようにリネーム(または移動)するかを、
perl正規表現で指定できる。説明不要の簡単さだ。

難しいこと抜きで今日からすぐに使える。

これはリネームの例だが、もちろん他のディレクトリへ移動させることもできる。

$ ls some/sub/dir/
file01.csv
file02.csv
file03.csv
file04.csv
file05.csv

# some/sub/dir/以下の.csvファイルをカレントディレクトリに移動する。
$ rename 's/\//_/g' some/sub/dir/*.csv

# 移動するとき、元のディレクトリ階層をファイル名にくっつけておいた。
$ ls
some/
some_sub_dir_file01.csv
some_sub_dir_file02.csv
some_sub_dir_file03.csv
some_sub_dir_file04.csv
some_sub_dir_file05.csv
これをmvでやろうとおもったらなかなか大変だ。



おさえるべきオプションはたった1つ


それは、-n オプションだ。

rsyncの--dry-run (-n)と同じで、
もし実行したらどのようなリネームが行われるかを表示して、実際には実行しない。
renameは一括でリネーム・移動を行うコマンドのため、
事故らないように -n で一旦確認するクセをつけておくといい。

$ ls
kuso.txt
miso.txt
unko.txt

$ rename -n 's/$/.bak/' *
kuso.txt renamed as kuso.txt.bak
miso.txt renamed as miso.txt.bak
unko.txt renamed as unko.txt.bak

$ rename -n 's/^(.{2})/$1-renamed-/' *
kuso.txt renamed as ku-renamed-so.txt
miso.txt renamed as mi-renamed-so.txt
unko.txt renamed as un-renamed-ko.txt
これらは実際には実行されていない。安心。
複雑なリネーム、移動のときには-n で確認しながらコマンドを書いていくといい。



まとめ


もちろんmvにサヨナラなんて無茶な話だが、
ls, find, grep とかをパイプでつなげて…とかやらなくても、単一のコマンドでパワフルなリネーム・移動が手軽にできるのはとても便利。
是非試してみてほしい。

2014-07-13

超簡単!shoptでbashの”秘められた真のチカラ”を開放する 【サンプルあり】



shoptとは?

bashのオプションを設定するための、bash組み込みコマンド。
bashの秘められた力を開放することができる。

shopt
でオプション一覧を表示・確認することができる。

shopt -s {オプション名}
set。指定したオプションをONにできる。

shopt -u {オプション名}
unset。指定したオプションをOFFにできる。

bashのオプションは数多くあるが、
デフォルトでONにされていて普段意識する必要がないものや、
普段使いでは気にしなくていいものもある。

今回は、bashの全オプションの中から、
これらをおさえておけば9割オッケーなイケメンオプションを紹介しようと思う。


autocd

ディレクトリ名のみを入力したとき、 cdの引数に指定されたものとして扱う。
対話的シェルのみで有効。

autocd: OFF

$ shopt -u autocd

# ディレクトリ名のみを入力
$ /usr/local/
bash: /usr/local/: Is a directory

autocd: ON

$ shopt -s autocd

# ディレクトリ名のみを入力
$ /usr/local/
cd /usr/local/

# ディレクトリ名がcdの引数として扱われ、移動できた
$ pwd
/usr/local


cdable_vars

cd への引数でディレクトリでないものは変数の名前とみなし
その変数の値をcdの引数として使う。

# unkoを定義
$ export unko="/usr/bin/"

cdable_vars OFF

$ shopt -u cdable_vars

$ cd unko
bash: cd: unko: No such file or directory

 cdable_vars ON

$ shopt -s cdable_vars

# unkoというディレクトリが見つからないので、unkoという変数として扱われる
$ cd unko
/usr/bin/

# unko: /usr/bin/ に移動できている
$ pwd
/usr/bin



cdspell

スペルミスでcdに指定したディレクトリが見つからないとき、
本来移動したかったであろうディレクトリにちゃんとcdしてくれる。
対話的シェルのみで有効。

cdspell OFF

$ shopt -u cdspell

# ディレクトリ名にスペルミス がある
$ cd /usr/loacl/
bash: cd: /usr/loacl/: No such file or directory

# ディレクトリ名にスペルミス がある
$ cd /user/bin/
bash: cd: /user/bin/: No such file or directory

cdspell ON 

$ shopt -s cdspell

# ディレクトリ名にスペルミス がある
$ cd /usr/loacl/
/usr/local/
# 移動できている
$ pwd
/usr/local

# ディレクトリ名にスペルミス がある
$ cd /user/bin/
/usr/bin/
# 移動できている
$ pwd
/usr/bin



dotglob

. (ドット) で始まるファイル名をワイルドカード(パス名展開)のマッチ対象に含める。
明示的に .*  としなくても * だけで対象ファイルになる。

dotglob OFF

$ shopt -u dotglob

$ ls *
kuso
miso
tech

dotglob ON

$ shopt -s dotglob

$ ls *
.bash_profile
.bashrc
.ssh
.viminfo
.vimrc
kuso
miso
tech



extglob


基本的なワイルドカードでのパターンマッチング(*, ?, [a-z] など)に加えて、
さらに強力なワイルドカードの表現が使えるようになる。

通常のパターンマッチング

  • * ……… 任意の文字列にマッチ
  • ? ……… 任意の1文字にマッチ
  • [] ……… 括弧内のいずれか1文字にマッチ

extglobで使えるようになるパターンマッチング
  • ?(pattern-list) ……… 与えられたパターンが 0 回または 1 回現われるとマッチ
$ ls
ab.txt
abab.txt
ababab.txt


$ ls ?(ab)ab.txt
ab.txt
abab.txt

  • *(pattern-list) ……… 与えられたパターンが 0 回以上現われるとマッチ
$ ls
ab.txt
abab.txt
ababab.txt

$ ls *(ab)ab.txt
ab.txt
abab.txt
ababab.txt

  • +(pattern-list) ……… 与えられたパターンが 1 回以上現われるとマッチ
$ ls
ab.txt
abab.txt
ababab.txt

$ ls +(ab)ab.txt
abab.txt
ababab.txt

  • @(pattern-list) ……… 与えられたパターンに 1 回だけマッチ
$ ls
ab.txt
abab.txt
ababab.txt

$ ls @(ab)ab.txt
abab.txt

  • !(pattern-list) ……… 与えられたパターンのどれでもないものにマッチ
# 拡張子が.txt以外のファイルをリストアップする
$ ls
a.doc
a.gif
a.jpg
a.png
a.ppt
a.txt
a.xls
a.xlsx
b.txt
c.txt


$ ls !(*.txt)
a.doc
a.gif
a.jpg
a.png
a.ppt
a.xls
a.xlsx

# 拡張子が.txt以外のファイルをバックアップディレクトリに移動
$ mv !(*.txt) someBackupDir/

地味に便利。



globstar

** というワイルドカードが使われたとき、 該当ディレクトリ以下の
 サブディレクトリ、ファイル全てに再帰的にマッチする。
**の直後に / が続く場合には、 ディレクトリとサブディレクトリのみにマッチ。(再帰的でない)

globstar OFF

$ shopt -u globstar

# カレントディレクトリ直下の全ファイル・ディレクトリのタイムスタンプを更新
$ touch *

# カレントディレクトリ直下の全ファイル・ディレクトリのタイムスタンプを更新(↑と同じ)
$ touch **

globstar ON

$ shopt -s globstar

# カレントディレクトリ直下の全てのファイル・ディレクトリのタイムスタンプを更新
$ touch *

# カレントディレクトリ以下のファイル・ディレクトリのタイムスタンプを再帰的に更新
$ touch **



nocaseglob

ワイルドカードの展開を行うときに、 大文字と小文字を区別しない。

$ ls
AA
Aa

nocaseglob OFF

$ shopt -u nocaseglob

$ ls a[a-z]
ls: cannot access a[a-z]: No such file or directory

nocaseglob ON 
$ shopt -s nocaseglob

# 大文字小文字を区別しないマッチング。
#1文字目の a も大文字小文字区別されていないところも注目。
$ ls a[a-z]
AA
Aa


nocasematch

case や [[ でのパターンマッチのとき、大文字小文字を区別しない。

nocasematch OFF

$ shopt -u nocasematch

# マッチしない
$ if [[ "unko" = "UNKO" ]]; then echo match; fi

nocasematch ON

$ shopt -s nocasematch

# マッチする
$ if [[ "unko" = "UNKO" ]]; then echo match; fi
match

# ( [ 括弧が1つでの条件判定のとき) マッチしない
$ if [ "unko" = "UNKO" ]; then echo match; fi

おまけ: [ と [[ はどう違うの?
このへんも知っておくとひとつ上野プログラマになれそうよ♨


まとめ

エイリアスやキーマッピング、環境変数でシェルの利便性を高めている人は多いが、
シェルのオプションは意外とそこまで使われていないような気がする。。

気になったオプションがあれば試してみて、
もし気に入れば .bashrc, .bash_profileあたりに追加しておくと幸せになれると思う。

2014-07-09

[MySQL]nullの扱いについてプログラマ1年生レベルのことも分かっちゃいなかった


 スーパーこっぱずかしいが恥を忍んで書く




カラムの値がnullのレコードを取得するには、どんなwhere句を書けばいいだろうか?


考えるまでもない。

where column is null

= 演算子で null と比較してはいけない。(ヒットしない)

where column = null 



では、in条件のときはどうだろうか

今回、自信満々にこのような条件を書いて爆死した。。。
= でなく is null を使う背景まで正しく理解していなかったのがサムいところ。

where column in (1, 2, null)

正しくはこう書く。

where (column in (1, 2) or column is null)



MySQL - NULL値の問題

MySQLリファレンスマニュアル:NULL 値の問題
SQL では、NULL 値は、他の値と比較すると(NULLでも)常に偽になります。

NULL を含む式は、演算子と式に含まれている関数のドキュメントに特に断りがなければ、常に NULL 値を生成します。以下の例では、全カラムが NULL を返します。

mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

NULL のカラム値を検索したい場合、=NULL テストは使用できません。
どんな式でも expr = NULL は偽。

↑の公式リファレンスのほか、以下の記事が大変参考になる。
MySQL のNULL ではまったことあれこれ
そもそもNULL は何を意味するか
NULL との比較演算結果は常にNULL
NULL と論理演算子
NULL とインデックス
NULL とソート
NULL と集計
TIMESTAMP とNULL




まとめ

プログラマやってると時々
「いままでコレを知らずによく生きてこれたな」っていうのがある。

もう一度初心に返ってブラインドタッチ北斗の拳からやり直そうと思う。


2014-07-08

数々の脱オタファッション記事が言えなかった、最も重要な1つのこと【脱オタまとめリンクあり】

<a href="https://store.line.me/stickershop/detail?packageId=1001749" target="_blank">


(#`・ω・)
自分が「イケメン」か「ブサメン」の
どちらなのか、ちゃんと把握しとけ!!
「自分はフツメン」とかいって
逃げてっからいつまでもオタなんだよ!!

(´;ω;`)
イヤァアアアアアアアアアアアアごめんなさいごめんなさい


もこみち・キャンドル涼子 >>(越えれない壁)>> 我々


地獄のような書き出しで御座いました。

脱オタのためのファッションアドバイス記事は数多くある。(ページ最後にまとめリンクあり)
もちろんどの記事も参考になるが、
どの記事もふれていない重要なことが1つある。

その前提になるのが、「フツメンに逃げるな」というキッツイつっこみだ。

そう、我々は永遠にもこみちや、キャンドル涼子にはなれないのだ。
勇気をもって現実を受け入れて脱オタに臨まねばならない。

自分がブサメンであることを受け入れたならば、脱オタのゴールは近い。
なぜならば、最も重要な次のことが理解でき、実践できるからだ。



脱オタの服選びで、最も重要な1つのこと


脱オタの服選びは………

鏡を見てはいけない。

もっと正確に言うと、「鏡に顔を映してはいけない。 」
鏡を見るときも、自分の顔は映してはいけない。
試着時など、全身が鏡に映るようなときは、自分の顔のことは意識の外に追い出す。

なぜか?

着たことのない服、見慣れない格好、したことのない色使い。
これらを自分の顔とともに見たとき、よくある感想は以下のようなものだ。
身に覚えはないだろうか?

  • 自分には似合わない
  • 自分には派手過ぎる

これでは、行き着く先は、いつもの格好と大差ないものになってしまう。
脱オタというゴールはいつまでたってもやってくることはない。
「自分の顔と合うか」の評価基準が頭にうかんでしまった時点で、既に失敗しているのだ。

脱オタで大切なことは、「自分」と切り離して服を評価する視点だ。
自分には似合わないと思うのは、大抵の場合、着慣れているかどうかでしかない。



イケメンにも有効だよ


美男美女とされる人にもコレは有効で、
イケメンはどんな服でも似合ってしまうため、
原宿にいるような「やりすぎ」「がんばりすぎ」系になってしまうことがある。
例を挙げるとこんな感じ 名古屋のオシャレ皇帝は謎の魅力があるよね

服を自分の顔と合わせないことで、
純粋にその服自体、そして服の組み合わせの問題として考えることができる。
その結果「さすがにコレはないだろう」と思いとどまることができ、
周囲からドン引きされるリスクを回避できる。



まとめ

センスはギフト(才能)ではなくスキルであり、ゆえにみがくことが可能だ。
脱オタ初期は、自分の顔のことは置いといて、
純粋の服の良し悪しだけで選択することで、センスを磨いていこう。

サイズ感とか色使いの話は、↓の参考記事が詳しい。


参考記事

 脱オタしたいんだけど最初に買うべきなのって何?

【脱オタク】ファッションセンスが悪いと言われなくなる5つの法則

脱オタクファッションガイド

脱オタしたくてファッション雑誌2年間読み漁った結果

脱オタクファッション革命は成功か!?

脱オタ金かかりすぎワロタwwww

脱ヲタ出来たのでまとめる。

25歳社会人男性向け見た目改造(脱オタ)方法まとめ -服装改造の4戦略

服屋で服を選べるようになるたった2つのパターン

「脱オタファッション」の専門店を作ればいいと思うんだ

マリオカートで語る脱オタファッション

36才の男です。訳あって脱オタクファッションしたいのですが

脱-オタクファッションで本当に必要な戦略

金をかけずに脱オタク・脱キモイ化するためのファッションマニュアル

私的脱オタファッション論

脱オタに失敗しやすい人の七つの特徴

脱オタファッション実践編

ファッションの脱オタはなんで面白くなさそうなのか?

「劣等感ではなく好奇心で動けるように」―4年で脱オタクに成功した男が激白

ファッションオタがあまりにも見当違いなので 脱オタ済みの俺が正しい脱オタ服指南をしてみる

脱オタの登竜門に丸井系はもう古い?丸井系のメリットとデメリットなど。

脱オタファッションに詳しいけど質問ある?

2014-07-07

マルチディスプレイに秘められた ”真のチカラ” を目覚めさせるウラ技で、作業効率さらに倍!


マルチディスプレイにしたところで仕事終わんねえ!



昨今の開発の現場では、マルチディスプレイでの作業環境がどんどん広がってきている。
デュアルディプスレイ(2画面)にとどまらず、トリプルディスプレイ(3画面)で作業している人も多い。

その理由はもちろん、マルチディスプレイ化による作業効率の大幅なUPがあるからだ。
もはや、1画面のみの頃とは比べ物にならない!

なのになぜ、あなたの進捗はしょっちゅう遅れるのだろうか?

それは、あなたがマルチディスプレイの ”真のチカラ” を引き出していないからにほかならない。



マルチディスプレイの使い方あるある


2枚でも3枚でもいいが、
ディスプレイを メイン と サブ にわけた時に、
よくあるパターンは次のような配置だ。

メイン
  • 開発環境(IDE, エディタ, ターミナルなど)

サブ
  • メーラー
  • スケジューラー
  • メッセンジャー
  • 資料
  • TODOリスト、メモ
  • ブラウザ
  • ファイラー

メインには開発系ソフト、
サブにはコミニュケーション系、管理系のソフトを表示させておくというパターンだ。
(ブラウザはどちら派も多そうだが、個人的にはサブディスプレイに置いている。)

開発の流れを止めることなく、他の必要な情報にアクセスできるので、
これによって多くの人が作業効率を向上させている。

しかし!

これの本当にもったいない点は、
マルチディスプレイの ”真のチカラ” を眠らせたまま作業をしているというところだ。
しかも、マルチディスプレイにした時点で一定の作業効率UPを手にしているので、
真のチカラを眠らせたままでいることに気がつかないでいる!



目覚めよ、真のチカラ 

秘孔を突け!!!!!

マルチディスプレイの ”真のチカラ”  を目覚めさせるためにすることは、
以下の1つだけ。
実にシンプルで、簡単だ。

メインディスプレイだけを残して、残りのサブディスプレイは消す

言うまでもなく、
プログラマには、「集中」して作業する時間が必ず必要だ。
もっと言うと、集中の先にある「没頭」に到達できるかどうかが、成果に大きく影響する。


コード以外の情報は遮断することで、
メールやメッセの新着に気を取られずに、目の前のコードにのみ集中できる。
コードに没頭し、トランス状態、確変状態でプログラミングを進めることができる。

マルチディスプレイは、表示情報量を増やして作業効率をあげるためのものだ。
それをあえて消すという逆転の発想の先に、
本当の作業効率UPがある。

もっとも大切なことは、
マルチディスプレイとシングルディスプレイを、状況によって使い分けるということだ。



まとめ

このウラ技は、指一本で簡単に実践できて、しかも効果はバツグンだ。そして、もうお気づきと思うが、これによって実際に引き出されるのは、
"マルチディスプレイ" の真のチカラではない。

なので、本記事のタイトルを以下のように訂正して、今回の記事を終わりたいと思う。

あなたに秘められた ”真のチカラ” を目覚めさせるウラ技で、作業効率さらに倍!

「進捗どうですか?」

大丈夫だ、問題ない。






あわせて読みたい

プログラマの生活を劇的に改善する、たったひとつのこと

 クリフトの効かないザラキ連発に隠された秘密と真実 

完璧すぎるビジネスを思いついたがヤル気がないので公開しちゃう


2014-06-28

eclipse「すばしっこい茶色の狐がのろまな犬を飛び越す。」 ナゾの例文には隠された秘密があった!

eclipse「すばしっこい茶色の狐がのろまな犬を飛び越す。」 

 プログラマ「は?」


なんの話?


eclipseのフォント設定画面には、フォントを確認するための例文が表示されている。
日本語化eclipseの場合、この例文として表示されるのが、

すばしっこい茶色の狐がのろまな犬を飛び越す。

という謎の文章だ。
なぜ、このような意味不明、、、とまでは言わないものの、
フシギな文章が表示されるのだろうか?

そこには、レッキとした理由がある。



この例文に隠された秘密とは?


すばしっこい茶色の狐がのろまな犬を飛び越す。

これは、日本語訳だ。元の英語ではこのように書かれている

the quick brown fox jumps over the lazy dog.

この短い英文は、あるルールのもとに書かれている。 それは………

アルファベットの a〜zの26文字全てを含んでいる!
このような文章のことを、パングラムという。



パングラム - Wikipedia

パングラム (pangram) は、アルファベットを使用する言葉遊びである。

ギリシア語で「すべての文字」という意味がある通り、すべての文字(26個のアルファベット)を使い文章を作るのが目的である。


なぜ、この文章が使われているのか?

もう、説明不要だろう。
この文章が使われている理由は、

フォントの確認に都合がいいから。

選択したフォントのaからzまでの文字全ての表示を確認することができる文章だからこそ、
フォント設定画面に例文として登場してくるのだ。
しかし、、、
すみずみまで日本語化されていてスゴイとは思うが、この例文を訳してしまったゆえに
設定画面の意図が失われてしまっているのがアレな感じ。

ともあれ、些細なことであっても、
理由がハッキリして違和感が解消されるのは気分がいい。






2014-06-24

時間がない、スキルがない!それでもLINEスタンプを公開できた3つのヒミツ【便利リンク集あり】


この記事の対象読者

  • 自作LINEスタンプの制作、販売に興味がある。
  • スタンプの制作は、まだ着手していない。または現在製作中。
時間がない人は、赤い文字の周辺だけ読んでいってもOK!


みんなの悩み


    • スタンプ40個なんて、とうてい作れる気がしない
    • 忙しくて時間がない、または帰宅後はダラダラしてしまい「集中した時間」がない
    • フォトショとかGIMPとか使えない(ていうかそんなの知らない)



    どうすればいいのか?


    スタンプ製作中は、つねに、以下↓に公開する3つのヒミツを意識して作業を進めるようにしていた。
    その結果、無事40個ものスタンプを完成させることができ、リリースすることができた。

    3つのヒミツ、惜しむことなく紹介していこう!





    ヒミツ1. 時間



    なによりもまず、作業時間を確保しないことには始まらない。
    自分にとって、忙しい毎日の中で制作時間を確保するのに一番効果的だったことは。。。

    家ではやらない
    やらないことを決めることの大事さ

    ムジュンしてるように見えるけど、事実、これが効果バツグンだった。
     集中するにせよ、ダラダラするにせよ、家での作業には終わりがない。
    やる気にならないときは、どこまでもダラけてしまう。

    いや、そんなことはない、私は頑張れるといっても、
    40個の道はなかなか遠いので、頑張り過ぎて途中で飽きてしまったり、
    燃え尽きてしまっては意味がない。

    今回公開したスタンプ「モテ力UP!イケメン・コレクション」は、
    ほとんどを以下の場所で作業した。

    • 行き/帰りの通勤電車の中
    • 帰り途中の寄り道カフェ(時間を買っているという点がポイント)

    電車は目的地への到着、カフェは閉店と、
    どちらも外的要因で作業時間の終わりがやってくる。
    限られた時間で制作を前進させる 、というミッションが作業効率を爆上げしてくれる。
    特にカフェは時間をお金で買っているので、時間をムダにすまいというヤル気もついてくる。



    ヒミツ2. 道具


    できるだけスマホで作業するというのがポイント。
    スキマ時間に気軽に作成を進められる。どこでもできる。

    LINEスタンプ制作の80%はスマホでできると言っていい。


    【手作業】
    • 下絵作成 ……… ラフで全然OK。スマホで線を整えて彩色していく。
      スタンプの作風によっては、これもスマホアプリで描いてもOK。


    【スマホ】
    • 下絵の取り込み ……… カメラで下絵を撮影して取り込む
      スマホのデフォルトカメラで充分。スキャナとか不要。
       
    • 下絵をキレイにする  ……… ラフ画のノイズや陰影を消して、ぬり絵化する
      Little Photo使用
       
    • 彩色  ……… スマホのペイントソフトでぬりぬり(コレが一番時間かかる)
      SketchBookMobile使用

    【PC】仕上げに少し使ったくらい。自分の場合はGIMPを使った。
     だけど、ぜんぜん大したことはやってない。
     ちょっとアプリ探せば充分スマホでも可能な作業だと思う。
    • リサイズ ……… 横370px 縦320pxに収まるように
    • 余白 ……… 画像の周囲に10px程度の余白が必要
    • 背景透過 ……… リジェクトの理由1位?「背景を透過処理していない」

    人によっては、100%スマホでできちゃうかも。



    ヒミツ3.習慣化


    目標ではなく、制限を決める

    「1日に2枚は下絵を書く」
    のような目標を立てるのではなく、

    「1日に書く下絵は2枚まで」
    のように、制限を決める

    それ以上はできるとしても、時間があってもやらない
    空いた時間を全てスタンプ制作につぎ込まない。

    大事なことは、完成させること。
    40個作るという長距離走で、威勢よくスタートダッシュして途中でバテないように、
    毎日リズムを作って進めていくのがコツだと感じた。

    あと、「継続できている自分」の発見は、なかなか気持ちいいものがある。
    習慣化できてしまえば、半ば完成したも同然だ。ゴールは必ずやってくる。



    便利リンク

    LINE
    http://line.me/ja/
    まずはLINEのインストールとアカウント作成 !

    LINEスタンプクリエイター登録
    https://creator.line.me/ja/
    つぎに、スタンプクリエイターとして登録しよう!

    LINEスタンプガイドライン
    https://creator.line.me/ja/guideline/
    せっかく申請したスタンプがリジェクトされないように、
    こまめに確認しながら制作をすすめよう ◎

    LINEクリエイタースタンプシミュレーターStampers(スタンパーズ)
    http://www.stampers.me/simulation/
    製作中のスタンプが、実際にLINEでどのように表示されるか確認できる便利サイト。

    LINEスタンプシミュレータ
    http://line.g-at.net/
    スタンパーズと同様。どちらを使うか、お好みでどうぞ。

    GIMP
    http://www.gimp.org/
    言わずと知れたフリーのグラフィックソフト。なんでもできる。
    基本的にはスマホでできるけど、スマホだけでやろう!という事でもない。
    使えるものは使っていこう。

    Sketchbook Mobile
    https://play.google.com/store/apps/details?id=com.sketchbookexpress&hl=ja
    ペイントアプリ。無料だけどレイヤーが使えて便利。
    今回わかったことは、「指で色を塗る」ことは、思った以上にやりやすい!
    マウスや、ペンタブレットと違い、頭脳と直結している「指」は、文字通り、自在に操れる。

    Little Photo
    https://play.google.com/store/apps/details?id=com.littlephoto&hl=ja
    写真にエフェクトをかけるときはいつもコレ。
    フィルタを選ぶだけの簡単操作でイイカンジの写真にしてくれる。
    フィルタの数も申し分なし。
    下絵のぬり絵化は、 White shine > Goldmine >  B&W smooth でOK!!

    LINEで誰でも自作スタンプを販売可能に!LINEスタンプの作り方
    http://matome.naver.jp/odai/2139342209617675301

    もう失敗しない!LINEスタンプの作り方と注意点まとめ
    http://teamsanta.info/web/589/

    【超初心者向け!!】秒速でLINEスタンプを自作する方法!
    http://teamsanta.info/web/978/

    自作LINEスタンプ制作で意識しておきたいポイント&ガイドラインに書かれていない注意点など!
    http://www.studioloupe.com/2014/04/linestickers.html

    【速報】LINEスタンプを作って販売してみた!やってみて分かった押さえるべき11のポイント!
    http://smalistblog.com/646

    LINEクリエイターズマーケットの登録方法と注意点!作り方は簡単?
    http://n-jinny.com/3567.html

    LINEスタンプ上位ランカーはリリース後の一ヶ月で何をやったのか?を聞いてみた!
    http://smalistblog.com/1036

    売上4倍に? LINEクリエイターズスタンプ、販売国を世界中に拡大
    http://appllio.com/20140620-5378-line-creators-stamp-world

    LINE、自作スタンプが作るクリエイターのオアシス 目指すは「家が買えるくらい稼げる場所」
    http://www.itmedia.co.jp/news/articles/1406/11/news018.html

    作成ノウハウ、公開後のプロモーション、マーケットの展望など。
    目を通しておくと、きっとあなたのスタンプも売上アップするはず





    あわせて読みたい

    プログラマの生活を劇的に改善する、たったひとつのこと

     クリフトの効かないザラキ連発に隠された秘密と真実 

    完璧すぎるビジネスを思いついたがヤル気がないので公開しちゃう


    2014-06-17

    モテ力UP!!LINEスタンプ「イケメン・コレクション」をリリースしました


    あふれでる魅力個性イケメンたちが、
    愛の告白やビジネスのお手伝いをします!



    イケメンスタンプの3大魅力とは??
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓



    1.イケメンすぎるインパクト


    会話がはずみすぎてLINEのやりとりが終わらない、それがイケメンのインパクト。




    2.イケメンすぎる使いやすさ


    ちょっとしたリアクションだって、イケメンの魅力で会話に花が咲き放題です。
    イケメンスタンプは、「OK!」「YES!」「YEAH!」など、ポジティブな反応ばかりです。



    3.イケメンすぎる使用例


    • あなたが好きです!つきあってください!
    • 以上をもちまして、本商談は双方合意の上、成立という事で宜しいでしょうか?
    • 週末どこか遊び行こー?

    この圧倒的な使いやすさも、イケメンの魅力のなせるワザ☆
    どうぞ、イケメンスタンプであの人と親密になってください!
    ビジネスチャンスをつかんでください!