トップページ | 2011年7月 »

2011/06/29

MySQLのCASE文ではまる

久しぶりのブログです。

データがあるときはその日付、無いときは別の日付を表示するという
クエリを書くのにくろうしました

CASE WHEN p.expire_date IS NULL THEN '9999-00-00 00:00:00' ELSE p.expire_date END

答え合わせするとこれだけのことでした。
日付が無い場合は遠い未来を表したかったのでこのように書いてますが。
無い場合は遠い過去にしたかったらば、0000年当たりにすればよいでしょう。

LEFT JOIN で ORDER BYしたかったのもこれで解決。

2011/06/17

MySQLでテーブルの構造を得て、外部キー制約を削除する

基本、テーブル作成はphpMyAdmin上で実行します。
で、外部キーをつけてしまうと、列が削除できなくなってしまいます。

#1025 - Error on rename of './test/#sql-bd7_23903' to './test/tablename' (errno: 150)

ここではまってしまうことがよくあるので対策を記録しておきます。

まずコンソールのMySQLからSHOW CREATE TABLEする
SHOW CREATE TABLE [tablename];

すると外部キー制約が表示される

CONSTRAINT `tablename_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

これをALTER TABLE文で制約を削除

ALTER TABLE user_profiles DROP FOREIGN KEY `tablename_ibfk_1`;

これで、テーブルから列をDROPすることができます。

2011/06/15

MySQLで誕生日から現在の年齢を出力する。

ぐぐればいっぱい結果がでるんですが、どれもわかりにくかったので。

mysql> SELECT (YEAR(CURDATE())-YEAR('1990-06-30')) - (RIGHT(CURDATE(),5)<RIGHT('1990-06-30',5)) AS age;
+------+
| age |
+------+
| 20 |
+------+

PostgreSQLでは、そのものズバリ、age()っていう関数があるんですけどね。
MySQLでは標準でないようなので、自分で関数化しろってことかな。

2011/06/14

App Storeはほとんど死んだ

「App Storeはほとんど死んだ」――UEI清水氏らが考えるスマホ時代の稼ぎ方

こちらの記事が、前回私が書いたiOSの考えとほぼ同じ意見でした。

 6月のWWDC(Appleの開発者会議)で発表されたiOS 5には、ロック画面から素早く利用できるカメラ機能やTwitter連携機能、クラウドを使ったコンテンツ共有機能などが追加された。こうした新機能は、例えば高速起動を売りにするカメラアプリや各種のTwitterアプリ、Dropboxなどのクラウドアプリを不要にする要因になりかねない。人気の高いサービスがAppleに“回収”されてしまう状況は、サードパーティーにとって厳しいものだ。

 この事態は清水氏にとって既視感のあるものでもある。「昔はマイクロソフトがやっていたこと。CD-Rの書き込みソフトが売れていた時に、それがOSの機能として組み込まれた」(清水氏)。さらに、「生き残るのはゲームもしくはエンターテインメントだけだと思う」(清水氏)とも。

ここですね。結局、AppleやMicrosoftというプラットフォームを提供する所には絶対に勝てない。
私は昔、WindowsでCDを焼くためにB's Recorderというソフトを買っていましたが、
今では開発会社は倒産して、ソースネクストが権利をもっています。

プラットフォーム提供者が、アイディアをいただいて、店子の食い扶持をなくすというのは
これからはグリーやモバゲーなどでも行われるでしょう。

現代のアプリ/システム開発業はまさにサバイバルの時代です。
マスな市場は世界中にライバルがいて、しかも親玉のプラットフォーム提供者も出てくる。

負けないようなコンテンツを作るか、独自でプラットフォームを開拓するか。
どこかの下請けとして細々と食っていくか・・・
業界が成熟してくると、やはり小さい組織では戦いは難しくなってきますね。

最後に、UEIの清水社長、Zeptpadの為にiPadを購入したので、バージョンアップお願いします〜

2011/06/09

PostgreSQLのVACUUM

ずいぶん昔から運用されていたサービスのPostgreSQLサーバーからエラーメッセージが出るようになりました。

WARNING: database "databasename" must be vacuumed within 1000000 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "databasename".

PostgreSQLでは、定期的にVACUUMというメンテナンス作業をしないと、
トランザクションが解決できずにたまっていってしまいます。

それが1000万回を越えると、いっさいのINSERT文やSELECT文も実行できなくなるという
なんとも致命的なデータベースなのです。

問題に気がついたときは920万回のトランザクションがたまっていました!

さすがにこのままでは危ないので、サービスの緊急メンテナンスをアナウンスして
VACUUM FULLをかけようと思います。

手順を自分用にメモっておきます

まずはPostgreSQLを停止。
続いてpostgresユーザーにチェンジして
postgresql -D /home/データベースの場所 DB名
でバックエンドモードで起動して

VACUUM FULL VERBOSE
とコマンドを実行。

ただ、いつになったら終わるんだ・・・という絶望的な状況。

PostgreSQLの新しいバージョンはVACUUMが無くても動くようになったという話を
聞きましたので、そちらに入れ替えた方がいいのかなー。
とはいえ、サービス自体、止めるかもしれないものなので。悩みます。

2011/06/08

Google AdWordsに広告を出してみた

たまたまメールボックスを見たら、Googleさんから、AdWordsを体験してみませんか?というメールが。
5000円分のクーポンコードがついている。

せっかくだから、試しに使ってみよう。ということでやってみました。

まず最初に、AdWordsに紐づけるGoogleアカウントを選びます。
うちは、Google Appsにメールサーバーをあずけているので、そちらのルートアカウントで登録しました。

キャンペーンの作成では、表示させたいURLと文章をまず設定。

一日にかける予算、キーワード、どこの地域のユーザーに出すかまで設定できます。
国ではなく、長野県など具体的に指定できるのがすごいですね。

予算は1日100円までにしました。
支払い方法でカードを選択して、1000円分だけ、前払いにしました。

ここまでやらないと、クーポンコードを入力することができません。
かならず決済方法を登録しないといけないのでお手軽感は無いですが、
悪用されないようにこういう風にしてるんでしょうかね。

キャンペーンを作成したので、今後どの程度表示されて、クリックされるのかを
管理画面を使って様子見したいと思います。

Google AdWordsの効果はどうなるのかなー。

2011/06/07

手のひらの上の商売

WWDC 2011始まりましたね。
私も、ジョブスのキーノートが気になって早朝に目覚めて途中から生中継を見ました。

個人的には、OS XとiOSの融合について、言及するのかな?というのが注目点でした。
Lionのユーザーインタフェースは、明らかにiOSとの融合を目指していると思っています。

・フルスクリーンでアプリケーションを操作
・ランチパッド
・マルチタップジェスチャ

上記はiOSの特徴であり、これをOS Xに取り入れているのが、私がそう思う原因です。
噂ですがARMプロセッサで動くMacBookAirを作成中との話もありますし、
水面下では融合したOSが開発されているのではないでしょうか。

さて、
Appleに殺されてしまうひと達まとめ
という記事が話題になっています。

iOSは確かにゴールドラッシュを生み出しましたが、相当の会社が胴元のAppleによって
仕事を奪われています。

これについて、やはり異議を唱える方は多いようです。

せっかく囲い込んだ開発者の仕事を奪うとは何事か!
アプリ開発者を馬鹿にした行為だろ!
とか。

でも、Windowsでも標準でZIP展開できるようにしたり、
DVDが標準で再生できるようになったり、同じことはやってるんですけどね。

AppleもMicrosoftも、製品の品質をあげたいというのが根本にあるわけですから
標準提供されるアプリケーションとの戦いというのは、そのプラットフォームで
商売する以上は避けられない問題だと思います。

他人の手のひらの上で商売をするからには、この覚悟が必要です。
標準アプリではなく、こちらを使おうという気にユーザーをさせなくてはいけない。
個人でカメラアプリを開発している方は苦しい戦いになるでしょうね。

とはいえ、Androidという荒野で生きていけるかも不安ですね。

スマートフォンアプリブームで独立した技術者さんはどうなるのでしょうか…。

2011/06/06

SEOは終わるのか?いや、そもそも不要じゃない?

nanapiを運営している、ロケットスタート社の社長、けんすう氏が

SEOの終わりとソーシャルとnanapiのコンテンツの未来

という記事を書かれております。

私は現在、仕事の都合でSEOをやっていますが、そもそも論として「SEO」というもの自体が
不要だと思っています。

けんすう氏の記事には、コンテンツファーム問題とGoogleがどのように対処したのかが書かれています。
また、私の前回のエントリで述べたような、ソーシャルを使った検索結果についても
同じ予測をしております。

SEOというのはそもそも、化学調味料のようなものです。
本来はGoogleが独自のアルゴリズムで、よいコンテンツを検索結果の上位に持ってきていたのを
人工的にまねて検索上位にもってきています。

よいサイトが自然と上位にくるのがWebの健全な姿だと私はおもいます。

nanapiでやっているのは、ユーザーに良いコンテンツ(レシピ)を書いてもらって、
PVを稼いで、いずれは広告などを入れていってマネタイズするというものでしょう。
良いコンテンツを、一般から募るというのは間違っていない、と思います。

しかし、作成したレシピがあまりにも的外れだったり、個人の偏重した意見が書かれているのは
いかがなものか?というのが私の意見。nanapiスタッフが勝手に編集するというのもおかしい。

さらに、良い、と評価するのはログイン無しでもできるが、きょとん、をつけるためには
アカウントを作成してログインしないといけない、というのも不平等。

こういうページを検索上位に持ってくるというのも、Webにとってよくないと思います。

本当に価値のあるWebコンテンツとは見る人間によって異なるので
サーチエンジンが最適化すべきは、アクセスが多いとか、リンクが多いとかではなく、
検索者にとって有益かどうか、ではないでしょうか?

2011/06/03

Google +1って何だ?

最近、はてなブックマークで話題になっている「Google +1」って何だ?

というわけで調べてみました。

簡単に言うと、Facebookの「いいね!」Google版ですね。

GmailなどでGoogleのサービスにログインしていると、自動で自分のアカウントに紐づけてくれるみたい。
マイプロフィールでどこで+1をクリックしたかがわかるようになるようです。

なぜこのようなものが流行っているのかと言いますと、検索のソーシャル化がキーワードではないかと。

いままでの検索エンジンではHTMLのタグやリンクの数でしか、ページの重要度を調べる方法がなかったんですが、
Facebookのいいね!やGoogle+1が、たくさんクリックされているページを重要なページとする。
という風に検索結果が変わっていくと思います。

自分も仕事でSEO対策やっているのですが、結局大切なのはWebサイトの中身だと思います。
機械的なアルゴリズムに頼らず、ユーザーが好んで見ているページを上にもってくる
というのが次世代の検索システムになるのではないでしょうか。

とはいえ、ネットマイルという会社がFacebookページのいいね!をクリックすると、
ポイントをくれる。というサービスを始めたらしいので、
ソーシャルを使った検索も、お金のばらまきで操作されそうです。

起業家のかたは、Google+1ボタンを押せばポイントを配布するよ。というサービスを
今から立ち上げてみてはいかがでしょう(笑)

2011/06/02

SEO対策の基本

今、会社のホームページのSEO対策を依頼されています。

とはいえ、私の本業はシステムエンジニアなもので、そっち方面には疎いんですよね。
というわけで、本を購入してきて現在学習中です。

本の中から得られた情報をいくつか書き出してメモしておきます。

まずは「キーワードを決める」ことが大事なのだそうです。
事前に、どのキーワードで検索されたときにヒットするようにしたいかを考えます。

で、そのキーワードに対してどれくらい競合がいるのかを探すツールがあります。
Google キーワードツール

ってのがありますんで、そちらを入力。

たとえば、「札幌 中古マンション」と検索してみると、こんな感じになりました。

20110602_170531

競合性メーターが高いほど、検索順位争いが厳しいことが分かります。
また、月間Googleで何回そのキーワードで検索されているかもわかります。

競合が多い場合、そのキーワードで戦うのは難しいですね。
弊社でSEO効果を上げたいキーワードは競合性が少なかったので
そのキーワードでトップに立とう!

という目標を掲げてみました。
さて、どうなるかな。


トップページ | 2011年7月 »