サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
neoinspire.net
Googleの検索ワードTOP30サイトを母集団に共起語を抽出します。 共起語とは、任意キーワードの文章を書くにあたって「キーワードと合わせて使用される確率が高いワード」です。 検索ワードを入力すると、共起語として認識されていると思われる単語を出力します。
故あってVPSをたくさん設定することになったので、 これは今流行りのchefとかpuppetとかでしょうとか思ったものの調べた結果 ansibleがベストだと思ったので、そのお話です。 ●要件 ・SSHが最初から起動してるVPSに一度もログインせずに全部まとめて設定したい ・できればめんどくさい勉強はしたくない ●chef でなく ansible 調べた感じ巷では例えば chef とか puppet とかは情報が多かったんですが、 そもそもクライアントをインスコしないといけないという時点でアウトでした。 あれはキッティングするレベルの人達が最初から入れておこうねとかそういうやつであって、 借りてきたものをあーだこーだするレベルの俺みたいなエンジニアには不要でした。 (自分はどうせ httpd,sshd,squidとcronの設定くらいでよかったってのもありますが。) 監視はポーリングレベル
現在製作中のアプリはツイッターライクなやつなんですが、 CGMというかユーザが投稿できるタイプのアプリにはEULAとか削除のポリシーとか 結構色々と要求されます。 で高確率で来るのがこのメッセージ - Use Moderators to flag and remove inappropriate content - Require that your users agree to terms (EULA) and these terms must be clear that there's no tolerance for objectionable content - Users need a way to flag or report objectionable content and/or users generating this content - Developer must
絵画センス0に自分にはフォトショやらイラレやらは操作はできても まともなボタンを作ることはできないので、 せめて単純な角丸グラデのボタンくらいXMLで作れないかということで。 結果こんなかんじになりました。 メインに配置するボタン #layout/main.xml <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/submitButton" style="@style/myButton" /> ボタンのスタイル設定 #values/style.xml <resources> <style name="myButton" parent="android:Widget.Button"> <item name="android:textCol
わざわざセキュリティリスクを上げるプログラムを書くとかどうかしてると思うけど。。 セッションハイジャックのために session_regenerate_id(true)を書くと リンクをダブルクリックしたときに高確率でセッションが切れるようになります。 たぶんセッションを保存するI/Oのあたりなんじゃないかなぁと思いますが、 さしあたってこれでは色々と支障をきたすので、 こちら側で session_regenerate_idのタイミングをコントロールしなければなりません。 でこんなかんじ。 //ログインするときexpireにtimeをいれてく $_SESSION['expires'] = time(); //セッションのページを開くたびにこんなかんじ。 if ($_SESSION['expires'] < time() - 7) { session_regenerate_id(true);
いや 何をいってるかわからないとおもうが。。。(ry なんでこんなことしなきゃいけないのかわかりませんが、 文字列が必ず毎回同じ(int)数値になるようにしなきゃいけなくなりまして。 こんな感じでかいてみました。 $word2Int = (int)("1".substr(preg_replace("/[^0-9]+/","",md5($word)),1,9)); 一応コメントをつけるとすれば 文字列をmd5して、そこから0-9以外の数値を切り取って、 PHP_INT_MAXの値の桁数くらいまでに抑えるようにsubstrして 頭が0だと8進数になって8,9の数値がぶっ壊れるので適当に頭は1固定とかにして、 それを(string)から(int)キャストするかんじです。 こんなかんじ。 $word2Int[] = (int)("1".substr(preg_replace("/[^0-9]+/"
インストール方法はおいておいて(ぉぃ とりあえず使い方とかだけ若干はまったのでメモしておく *Controller系 ○既存のSmartyだと //変数のアサインはこう $smarty->assign(‘変数名’, ‘出力データ’); //表示はこう $smarty->display(‘対象のテンプレパス’); ○cakePHPに入ると //変数のアサインはこう $this->set(‘変数名’,’出力データ’); //表示は$this->set() で同時に行うから意識しないでOK *View系 //表示は既存のSmartyになる {$変数名} の形式 cakePHP部分での拡張も存在 ・htmlヘルパーが使用可能 -> htmlヘルパーについてはリファレンスを参照 http://cakephp.jp/doc/helpers.html#id4808750 なお<?php $html->*
何週間前かもう覚えてませんが、とりあえず申請していたのがやっと通ったようで。 ってことで、AppInventor触ってみました。 http://appinventor.googlelabs.com/learn/ 初めに とりあえず動画は見ていたのでブラウザでいじれるんだろうって思ったら、 どうもアプリもインスコしないといけないらしい。 (別にアクセス許可が下りる前からインスコまではできるらしい) I downloaded the App Inventor Extras Installer and ran it. Can I start using App Inventor right now? No, App Inventor is a Web application that runs in a browser. You'll need to have access to the sys
さくらで運用しているアプリを弄っていたら 突然こんなエラーが ERROR 2013: Lost connection to MySQL server at 'reading initial communication packet' Error 61 無論DBにアクセスできない状態になったので、なんなのかなーと探っていたら 10分ほどして勝手に直った。 直った?っていうか本当に直ったの?ってことで 一応作業を終えた後色々調べていたら どうもプロセスが死んでリスタートされてる間にアクセスすると こんなエラーになるらしい。 このエラーが出た間に裏側ででたmysqlのエラーログはこんなかんじ。 Server shutdown in progress Lost connection to MySQL server during query Can't connect to MySQL server
調べる必要があったので、ついでにメモ。 とりあえず、割と?情報は充実しているようだけど 英語オンリーっぽいので。 APPIDはここで取得 http://www.bing.com/developers/ ->サイドバーの 「Create an AppID」 だいたいの情報はここに http://msdn.microsoft.com/en-us/library/dd251056.aspx まあSOAPでもRESTでもOKで、 結果もJSONでもXMLでも取得できますよってとこです。 とりあえず一番使うであろうRESTでのクエリーはこれ http://api.bing.net/xml.aspx?AppId= YOUR_APPID &Version=2.2&Market=ja-JP&Query=検索クエリー&Sources=web&Web.Count=1 web検索系のオプション Web.***
またまたSEOのお話 最近SEO BookMark なるものがあって 登録してみたんですが、見てるだけで色々新しい発見あって面白いです。 (SEOのナレッジのために自分はSEO Vertical Blog Searchを作ったんですが、 明らかにこっちのがクオリティも量も新規性も維持できますね~ カシコイ!もうこれやめよっかな。) それはそうとまた面白い記事を見つけたのでちょっとエントリー 検索エンジンの5つのプログラム – スパイダーとクローラって別物? in SEOブログ from SEO塾 よくよく考えてみると当たり前なんですが、 確かに言及するにいたってないですね。気づくことって重要ですね。 こういう時海外の情報をすばやく取得できる人がすごいです。 *ちなみにSEO Vertical Blog Searchでもスパイダーとクローラは別になっています。 ⇒が独立モジュールではありませ
自分は結構使う頻度が高いんですが、意外と地味なrange()について 基本 とりあえず普通に1~10の数値の配列 range(1,10); ⇒1 2 3 4 ・・・ もちろん逆もOK range(10,1); ⇒10 9 8 7 ・・・ アルファベットもOK range('a','z'); ⇒a b c d e ・・・ アルファベットも逆でいけます range('z','a'); ⇒z y x w v ・・・ 遊び 第3引数を使うともっと遊べます 奇数のみ range(1,10,2); ⇒1 3 5 7 9 偶数のみ range(2,10,2); ⇒2 4 6 8 10 アルファベットでもいけます 偶数のみ range('a','z',2); ⇒a c e g i ・・・・ まとめ こんなかんじで結構融通のきく関数なので、for(){} を使うような場合は結構な割合で foreach (r
imagick使ったほうが明らかに綺麗&楽にできるんだけど 勉強がてらGDオンリーでやってみた。 結果 やっぱ綺麗に抜けないw あとimagickだと3行くらいのソースが無駄に長くなるのがね。 実用的ではないです。 まあ一応GDで画像操作するコツみたいなのはわかったので 無駄ではないかな。。。 一応こんなかんじになりました。 //角の大きさ $cornerRad = 15; //元画像の読み込み $originalImage = imageCreateFromJPEG('images/test.png'); //角画像の読み込み $cornerPng = ImageCreateFromPNG('rounded_corner.png'); //角をリサンプリングするための画像 $cornerResized = imageCreateTrueColor($cornerRad,$cornerRa
セグメントベースURLの場合どうしても 天下の google には正しくキャッシュされなくなるパターンがあって、 それはいわゆる「SEO的によくない」状態なので、 それを直しましょうというお話です。 といっても結局力ワザなんですが。 どんなとき使うか パターンとしてはこーいう場合があります。 大カテゴリのコントローラがあります。 小カテゴリのコントローラがあります。 その下にデータのコントローラがあります。 というときに普通にやると ドメイン名/大カテゴリ ドメイン名/小カテゴリ ドメイン名/データ となってしまうわけです。 (1個のコントローラで全部書いてしまえば問題ないですが 普通わけるとおもいます。) で google 的には ドメイン名/大カテゴリ名/小カテゴリ名/データ となるのが理想的なキャッシュです。 なので 上記のURLでたたけるようにするやり方です。 dispatcher
オールドドメイン とはチョット違いますが、 いわゆるユーズドドメイン(ドロップドドメイン?)ってやつを 検索するサイトを作ってみました。 Used-Domain Checker ドメインエイジは流行らないよとか昨今聞きますが、 基本的にユーズドドメインは最初からPRがついてるとか そんなんじゃなくて、以前違うサイトがあったというだけのものです。 なので、ちょっとだけリンクが付いてたりしますが、 基本的には すぐクローラーがくるということ以外には 大して効果があるわけではありません。 それでもサテライトサイト作る時とか、 SEOをちょっとでも意識するのであれば すぐクローラーが来るのは便利なので、 こういうのを使ってもいいかなとおもって作りました。 ユーズドドメインチェッカー
どんなサイトでもたいていの場合 同じことが繰り返し表示される部分があります そのソースを毎回書くのじゃなく、どっかに書いてそれを再利用しましょう ということを考えるわけですが、 それのcakePHPでの解決方法を考えて見ます。(浅い知識で) cakePHPでそれを解決する方法が ぱっと2個あります。 (AppContoller に書くなんてこともあるので3つか。。) 1:requestAction() を使う 簡単に言えば別のコントローラのfunctionにタッチできますよということらしいです。 でもこれ、private functionはできない( _ で始まる名前のfunction)とのこと。 これって要は 外からURLぶったたいた結果を持ってきますよーってことみたいです。 なんとなく強引なイメージがありますね。 そもそも画面の一部分だけを 外でたたけちゃうのはいやだし。 2:comp
私用で前に作ったんですが、 今回別のアプリで流用するのでクラスにしたので ついでに公開します。 //2015/02/18 リンク修正 ダウンロードはこれ Class.GetTitleAndBody.zip CSSレイアウトのDIVかテーブルレイアウトのTDで分割して 一番リンク率が低い 設定値よりリンク率が低い 設定値よりタグ率が低い 画像率が一番高い 文字数が規定以上 一番大きいパラグラフ ここらへんにポイントを割り振ってはじき出してます なので、ITMEDIAのようにサイドバーがえらく充実してるとことか <div class=”brclear”>なんてひどいことしてるとことかは うまくいきませんね。 使い方 こんなかんじです。 $Html = new GetTitleAndBody(); $Html->GetHtml(“http://dev.neoinspire.net”); if(e
自分がはまっただけですが。 cakePHP の model を使って、 「なんも考えずに」 ループ内で insert を繰り返すとうまく insert されないっていう事象です。 ループで insert ループでデータを insert していきたいときに 直感でPHPを書くとこんなかんじで 実はこれが上手くいきません。 while(!empty($i)){ $insertData[‘Model’][‘id’] = $i; $this->Model->save($insertData[‘Model’],false); $i++; } 結果はどうなるかというと、ループの最後のデータだけが insert されます。 キャッシュ?とかいろいろ思ったんですが 実は理由は簡単でした。 とりあえず解決方法 これで連続 insert が可能に! while(!empty($i)){ $insertData
これはうれしい!!! 窓の杜とVectorっていうと 相当前から知っていて (Win3.1から95に乗り換えた時くらいじゃないか?) まあ 超有名ですよねーってことで。 seo-scouterのときも結構紹介していただいて、 メールももらったんですが、(Grevaさんやウィジェットタウンさんとか) 個別にしてたらキリないしとおもって、感謝のメールだけ返信してたんですががが (本当に有難うございます!) まあ これは記念てことでw http://www.forest.impress.co.jp/article/2009/05/26/tinytodo.html ネタがあればもっと作っていこう とモチベーションが上がった一日でした。 それにしても もっとヴィジュアル凝ればよかったとかいまさら。。。
Air-Seo シリーズ 公開ページ このページではAirで作成したSEOツール(Air-Seoシリーズ)を公開しています。 現在公開中のツールは2つです。 ・Air-Seo Webmaster (4/6公開) ・Air-Seo Scouter Air-Seo Webmaster Air-Seo WebmasterはGoogleサイトマップを複数サイト一括更新するためのツールです。 ダウンロードはこちら↓ http://neoinspire.net/air-seo/air_webmaster1.0.air スクリーンショット 機能説明 ・PAGERANKの取得 ・Google SITE: ・Google LINK: ・Google WebMaterTool インデックス情報の取得 ・Google WebMaterTool 最終クロール日の取得 ・Google WebMat
自分の記事()がフォーラムに乗っていて しかも知りたいことが乗っていたのでそれの追記も含めて。(またメモメモw *$this->log() の正しい使い方(応用編) $this->log() はログをとる為のものなわけですが、 そのままだと同じファイルに延々と書き足していくだけなので、 簡単にログローテーションする方法 URL:http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=562&forum=3 以下補足っぽく $filename = LOGS . date(‘ymd’) . ‘_’ . $type . ‘.log’; LOGS の部分が cake で定義されているパス /app/tmp/logs/ それに date() 関数でymd形式でつないで、ローテーションさせています。 月単位でローテーションするなら date(‘ym
こちらとかのエントリーを見て思ったことをつらつら コメントに書こうとして長すぎてエントリーに。。 http://www.algoritmi.jp/seo/20081204010749.html http://www.suzukikenichi.com/blog/googl-must-have-more-than-one-partitions/ (先にいってくと、私はGoogleもYahooも2つのインデックスは使っていないと思ってる人です) とりあえずインデックスってどんなものなのか イメージできていないとおもうので、 ここらへんを参考にしてみてください。 http://ja.wikipedia.org/wiki/%E8%BB%A2%E7%BD%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9 (転置インデックスの説明@wik
array_multisort で キー値を保持しつつソートする ArrayベースのDBを作って、使ってるわけですが、 そういう稀有な場合、array_multisort君がキー値を捨ててしまうのが 非常に邪魔なので、それをなんとか保持できないかという方法。 array_multisort //今回のテストデータ $mainData = array(); $mainData[] = array('data'=>'green33','main'=>'red33'); $mainData[] = array('data'=>'green40','main'=>'red40'); $mainData[] = array('data'=>'green31','main'=>'red31'); $mainData[] = array('data'=>'green10','main'=>'red10'
購読させてもらってるブログに書いてあったネタなんですが、 http://labs.cybozu.co.jp/blog/akky/archives/2009/01/hyves-google-penalty-check.html 元ネタ http://www.mediadonis.net/?p=378 http://www.prchecker.info/check_page_rank.php ここで適当に http://hyves.あなたのドメイン/ と入れてみる。 と 0,4,7の3パターンでしかPRが出力されないらしい。 hyves というサブドメインがテスト用なのかなんなのかは不明。 本サイトのコメント欄みてると結構見れましたとか スパムサイトが案の定4にみたいなのがずらずらでてるんですが、 その紹介されてるサイトを googleツールバーで見ても全部 0になってる。。 どうも 日本圏の
リファラでさっくり簡単かなーって思ったけどそうでもなかった・・ Googleだと 検索結果URL: http://www.google.co.jp/search?hl=ja&rlz=***&q=***&btnG=***&lr= PPCリンクをクリック PPCのURL先: http://www.google.co.jp/aclk?sa=l&ai=*** そのときの リファラ: http://www.google.co.jp/search?hl=ja&rlz=***&q=***&btnG=***&lr= ステータスコード: HTTP/1.x 302 Found 転送先: http://www.googleadservices.com/pagead/aclk?sa=*** 転送されてきたURL:http://www.googleadservices.com/pagead/aclk?sa=L&ai
まあ何がやりたかったって スパムチェック的な類似度チェッカーです。 こんなかんじ。 類似度チェッカー 全く違うURLだと5~10%くらいになって ちょっと関係がある(リンク紹介してたり)すると20%くらいかな 同じブログの違う記事とかだと40%くらいになって 60%超えたらかなり似てるページってかんじのラインです。 例えば wikiの アイスランドのページとアイルランドのページとかでやると 重複度77%とかになります。 Googleは言語にとらわれない解析方法を使っているとのことなので、 高確率で、どっかにNgramは使ってると思うので、 デュプリケイトコンテンツとかの参考に使えるかなーと。 一応ソース公開 たいしたものじゃないんですが、たいしたものじゃないだけに ソースくらい出しとけというお話です。 アルゴリズム的には単純に ・URLからタグを引っぺがす ・出てきたテキストのNgram(
最近はcurlでファイルアクセスする方法が多いんですが、 その際プロキシ経由でアクセスするための方法のメモ //curlがバンドリングされていないと使えません $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //プロキシ経由フラグ curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); //プロキシアドレス設定(プロキシのアドレス:ポート名) curl_setopt($ch, CURLOPT_PROXY, 'http://xxx.xxx.xxx.xxx:8080'); //念のためプロキシのポートを指定 curl_setopt($ch, CURLOPT_PROXYPORT, '8080'); //プロキ
いくらなんでもユーザがミッシングURLをたたいたときに Missing Controller の画面がでるのはひどいな。。。 (Debugモードを0にすると今度はデフォルト真っ白だし!) ということで、エラー画面の修正方法を調査 とりあえず /cake/libs/error.php がデフォで行うエラー処理らしい。 エラー処理も ・単にViewを変えるパターン ・エラー処理そのものを変えるパターン の2種類あるので、まあ、両方調べてみました。 今ある View を変えるだけパターン render()でviewに渡してる名前を全部リストアップして、 その view を /app/views/errors/ の中にファイルとして作成する。 以下14ファイル(これで全部だと 思う・・) error404.thtml missing_action.thtml missing_component_c
次のページ
このページを最初にブックマークしてみませんか?
『Neo Inspirations』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く