サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
シン・〇〇
demouth.hatenablog.com
下記の感じでなんとなくでMongoDBのcursorを使っているけど、今までちゃんと公式ドキュメントを読んだ事がなかったので改めてドキュメントを読んでみた。 var cursor = db.users.find(); while (myCursor.hasNext()) { printjson(cursor.next()); } 現行バージョン: https://docs.mongodb.com/manual/tutorial/iterate-a-cursor/ 過去バージョン: https://docs.mongodb.com/v3.0/core/cursors/ 仕様概要 軽く読んだ感じ次の仕様になっているらしい。 cursor.next() を使ってループする実装にしていても、実は毎回MongoDBサーバーからデータを取得している訳ではない(ネットワーク負荷がボトルネックになってパフ
golangの勉強がてらKVSのDBサーバーを雑に実装してみた。 DBの実装自体はbuntdbというライブラリをそのまま使っているので、あまり大した事はやっていないけど。 実装したDBサーバーについて OrenoDBという名付けた(メンテするつもりはないので雑な命名) メモリベースのkey-valueストア ポート8888固定でtcp接続を待ち受ける redisプロトコルを採用したので一般的なRedisクラアントライブラリで接続できる github.com 全体構成 大体こんな感じで実装されている。 DBサーバーを起動して8888ポートで待ち受ける。 clientが8888に接続しにくる。 DBサーバーはclientを受け入れてgoroutineを起動する。 groutineではclientからデータが送信されてくるのを待ち受ける。 clientから送られた文字列を溜め込んで、コマンドとし
golangがどんなものか軽く触ってみようかと思い、何か題材でもないと触るのも難しいだろうという事で、TUIでスーパーマリオブラザーズでも実装してみようという謎の題材をふと思いついた。 早速実装しては見たものの、本来の目的であるgolangを知る事そっちのけで実装してしまい、あまり理解が深まらないまま今に至る。題材が悪かったかも。 github.com Githubのリリースページから実行ファイルをダウンロード、解凍、ターミナルから実行で起動します。 操作方法は、左右の矢印キーで移動、上矢印キーでジャンプです。 Mac、Linux、Windowsで動きますが手元のWindows7だとチラツキがハンパないです。 とはいえMacでコードを書いて、MacでWindowsのexeをビルドして、Windowsに配布でそのまま動くというのはなかなか素敵な体験でした。
go言語(termbox-goではなくtcell)で実装されたmicroというターミナルベースのテキストエディタの version1.0 がリリースされたようで、試しにちょっとだけつかってみたのですが、なかなか使い心地がよいです。 というわけで(個人的に)使い心地が(いい意味で逆に)普通すぎるエディタ「micro」の紹介になります。 github.com microの特徴 microはターミナルベースのエディタであるものの、マウス操作がサポートされていたり、GUIアプリケーション風のキーバインドが設定されていたりと、いたって普通なGUIのテキストエディタを使っているかのように直感的な使い心地を実現しているのが最大の特徴だと思います。 いけてる特徴 マウス操作が使え、GUIアプリケーションのように直感的に使える わりと直感的なキーバインドが設定されている(Ctrl-cでコピーなど、Windo
なんとやくタイトルに倒置法を使ってみましたが、深い意味はありません。 というのはおいといて、 コアラのマーチには眉毛コアラがたまに入っていて、見つけるとちょっと嬉しいですが、php.netにもそんな遊びが仕掛けられているようです。 先日先輩から、php.netの右上のロゴが走る象になっている人が隣の席にいるという話をされ、気になったので調べてみました。 通常これが表示されているけど、これが走る象になっていたらしいです。 調査 htmlを読んでみると、この画像のURLは下記となっていて、phpのプログラムから画像を返す作りになっていました。 http://www.php.net/images/logo.php ググってみたところ、どうやらソースは下記のようです。 https://github.com/php/web-php/blob/master/images/logo.php このソースを
「Animated Gif Capture」というアニメーションGifを作るChrome拡張を公開しました。 Chromeに表示中のWebページをアニメーションGifに変換します。また、オプションページから設定を変更すると、デスクトップやChrome以外のウィンドウもアニメーションGifにすることが出来ます。 Chrome Web Storeに登録してあるので、ここからインストールできます。 Chrome Web Store - Animated Gif Capture - アニメーションGifキャプチャ キャプチャ例 Flashもキャプチャできます。 ※http://demouth.net/sketch/016/ 以前私がAS3で作ったやつ FlashのキャプチャできるのでVimeoでもYouTubeもいけます。 フレームレートを高めると滑らかなアニメーションGifになります。 ※これは
人気のあるPHPフレームワークについて調べていたら下記の参考になる記事がありました。 2013年において注目すべき PHP フレームワークは Laravel PHPフレームワークのベンチマーク比較と2013年のトレンド 「Githubのスター数」と「Googleトレンド」という観点が面白かったので、2014年2月14日現在で調べ直してみました。 Githubのスター数 PHPのフレームワークを適当にピックアップし、GithubのStar順に並べて表にしました。 2013年4月21日時点では3,971だったLaravelのスター数が[*1]、2014年2月14日現在では8,319となり、第1位になったようです。 フレームワーク Star Watch Fork 最新リリース 備考 Laravel 8,319 1,115 2,728 v4.1.18 Symfony 7,820 750 2,930
DmGeocorderというPHPで実装された日本国内用ジオコーディングライブラリを作りました。 住所から緯度経度を調べたり(ジオコーディング)、緯度経度から住所を調べたりすること(逆ジオコーディング)が出来ます。 https://github.com/demouth/DmGeocoder 特徴 一般的にプログラムからジオコーディングをする時、Google Geocording APIのようなジオコーディングAPIを利用しますが、当ライブラリは地理情報をライブラリ内に持ちジオコーディングAPIを利用しません。これによりジオコーディングAPIを利用した実装とは違い、回数制限など気にせず利用することが可能です。これがこのライブラリ最大の特徴です。 当ライブラリのソースをサーバーに配置するだけで利用可能です(ジオコーディングAPIやDBを使っていない為特にライブラリを利用するための準備、サーバー
ランダムで日本人の名前を返す gem を作った という記事をみて、日本向けのPHP版Fakerを見つけられなかったので作ってみました(追記fzaninotto/Fakerが日本対応されてたようです)。 github - demouth/FakerJapanese 普通に作ってもつまらないので、キラキラした名前を生成するようにしてみましたが、特に深い意味はありません。 読み込み方 1. require_onceする require_once 'vendor/Faker/Japanese.php'; 2. autoloaderを使う psr-0準拠なので、autoloaderで読み込めます 3. comporserを使う場合 "demouth/faker_japanese": "dev-master" 使い方 名前のダミーデータを生成します。 アロー演算子で姓や読みがな等を個別で取得出来ます。
PHPにはGDモジュールという画像処理系のモジュールが用意されています。これが入っていると画像処理•図形描画系の関数が使用する事ができ、基本的な機能は一通り用意されています。 例えばさくらのレンタルサーバーやロリポップでもこれらの関数を標準で使えたりするので、PHPでちょっとした画像処理や図形描画をする敷居は結構低いんじゃないかな、と思ってます。 軽くググってみた感じ、PHPでの図形描画やアニメーションについて紹介をしている記事があまり見つからなかりませんでした。恐らくあまり需要がないというのが理由なのだと思いますが、面白そうなのでサンプルを作りながら軽くPHPでのアニメーション表現について紹介してみようと思います。 前置き GDの関数は結構癖があります。単純にリサイズしたりする程度なら簡単に実装でき問題ありませんが、少し複雑な事をしようとすると、その癖を知っておく必要があり面倒です。 な
先日紹介したDmImageを使用すると色々な図形が描けます。 今回はドラえもんを描いてみたので紹介します。 ドラえもんを描画する 下記のコードでドラえもんを描画しています。 フォントはドラえもんフォントを使って描画しています。 もう少し画質を良くしたければ少し大きめに描画して、最後に画像を縮小すると綺麗に見えます。 <?php $colorBody = 0xFF0099FF; $colorLine = 0xFF003399; $colorWhite = 0xFFFFFFFF; $colorEye = 0xFF000000; $colorRed = 0xFFFF0000; $colorYellow = 0xFFFFFF00; $thickness = 3; $image = new Dm_Image(500,600,0xFFFFFFFF); $image->graphics //体 ->fi
PHPで画像処理といえば GD ImageMagick 辺りを使うのが一般的でしょうか。軽いノリで小さいアプリを実装する時はGDをが向いてると思います。 でもGDってなかなかクセがありませんか?何が違うのか分からない様な似た名前の関数があったり、半透明画像を扱う際は必ず呼ばないといけない関数があったり、テキストの描画が面倒、色の指定が面倒、など。 その辺のややこしい処理をラップして、よく使う機能を実装したライブラリ「DmImage」を作りました。 このライブラリを使うと色々出来ますが、 画像リサイズ ファイル出力 DataSchemeURI変換 ActionScriptやCanvasAPIの様な図形描画、色指定 Instagram風の画像加工 フォントのバンドルによる綺麗なフォント描画 辺りが特徴になるかと思っています。 では、早速使い方の説明です。 使い方 使い方1 〜 画像の表示 サイ
PHPのmb_strwidth()関数とmb_strimwidth()関数をJavaScriptで移植してみました。あまり動作確認してませんが、どうやらそれっぽく動いているようなので公開します。 mb_strwidth() int mb_strwidth ( string $str [, string $encoding ] ) 文字列 str の幅を返します。 マルチバイト文字は、通常はシングルバイト文字の倍の幅となります。 元となるPHPのインターフェースは第二引数までありますが、今回移植したものには第二引数$encodingはありません(UTF-8以外の動作確認してませんが、多分文字コードにかかわらずうまく動くとおもいます)。 PHPで次のコードを実行すると、16になります。 <?php var_dump(mb_strwidth("abcアイウあいうえお")); //int(16)
去年PHPで実装するWebSocketサーバーについて書きましたが、ブラウザのバージョンが上がり、内容が古くなってきたので、2012年1月2日今現在のブラウザで動くよう改めて書いてみようと思います。 前回とブラウザ以外は変わりませんが、今回はこんな環境で動かします。 さくらのVPS CentOS PHP 5.3.6 Chrome 17.0.942.0 dev-m Firefox 8.0 release channel Safari 5.0.2 iPhoneのmobile Safari iOS5.0.1 ※サーバー側のWebsocket用ポート開放を忘れずに。 今回の最終目標は上記ブラウザすべてで動作するリアルタイムお絵かきツールを作る事にします。 まずは動かしてみる 手順 ライブラリなどを配置してひとまずデモ用のチャットアプリケーションを動かしてみます。こんな手順で進めていきます。 Web
2012年1月2日 追記 最新のブラウザに対応したバージョンの記事を書きました。 今回はWebSocketの勉強をしてみます。 とりあえずサクっと動かしてみる事を目的としていますので、あまり細かい事は気にせずに行きたいと思います。 概要 さくらのVPSとPHP5.3でWebSocketのEchoサーバーを構築し、JavaScriptでサーバーに接続し、チャットできる簡単なサンプルを作ってみます。 次の様な記事をあらかじめ見ていたので、今回は対象ブラウザをChromeのみとしました。 http://www.publickey1.jp/blog/10/websocketfirefox_4opera.html 環境 さくらのVPS CentOS PHP 5.3 Chrome 10.0.628.0 dev 参考:さくらのVPSについて 先日hetemlからさくらのVPSにサーバーを移行しました。
Youtube instantをパクったサービス「ニコニコ動画instant」「ぐるなびinstant」を公開しました。もちろん非公式です。 このサービスはニコニコ動画とぐるなびの店舗を検索し表示するサービスです。最大の特徴は検索ボタンをクリックしなくても即座に検索結果が表示される事です。 ぐるなびは地名で検索や、料理名で検索したりしてみるといいかと思います。 ニコニコ動画 instant (http://instant.demouth.net/nico/) ぐるなび instant (http://instant.demouth.net/gnavi/) 使用させていただいたAPI: ニコRSS , 公式API , ぐるなびAPI , google suggest APIの使用についてはご迷惑をお掛けしてしまうかもしれません。 何かございましたらtwitterまでお願いします。
switchの意外な使い方を発見したのでメモ。(私のような素人プログラマには驚きだったものですので) 型チェックを例にすると・・・。 以下if文を使用した例。 var hoge:Array = []; if (hoge is XML) { trace(0); } else if(hoge is Array) { trace(1);//ここがtraceされる } else if(hoge is Sprite) { trace(2); } 以下switch文を使用してやる例。 var hoge:Array = []; switch(true) { case hoge is XML: trace(0); break; case hoge is Array: trace(1);//ここがtraceされる break; case hoge is Sprite: trace(2); break; de
私は今までPHPでサーバサイドしか触ってこなかったので、メモリの開放の方法について良く分かっていなかったのでちょっと調べてまとめてみました。 まず、普段何気なく変数を使用していますが、変数とはメモリへの参照の事らしいです。 たとえば、 var str:String = "hoge"; とかあったら、メモリ上に”hoge”があって、そのメモリへの参照をstrが保持しているって感じらしい。 だから、 str = null; ってやればメモリ上の”hoge”を参照している変数がなくなるので、メモリ上から”hoge”は消えます。 といっても、すぐに消えるのではなくガベージコレクタという機能が実行されたタイミングで消えるそうです。 で、displayObjectの場合、例えば、 this.sprite = new Sprite(); this.sprite.graphics.beginFill(0x
Flash CS4から新しく「インバースキネマティック(IK)」という機能が搭載されましたが、この機能を使わずにActionScriptで実装してみました。 今回作成したのはこれ(要FlashPlayer10)。ちなみにキャラクターも今回の為に準備しました。 説明 勘だけで実装したので一般的な手法でないかも知れませんが、軽く説明してみます。 大まかに以下の1から5の流れになっていて、1から4まではすべて座標計算、5では算出した座標を使用してdrawTrianglesメソッドにて描画しています。 1.mouseDownした位置から関節までの距離を求める(下図参照)。 2.ドラッグ後座標と関節との直線上に新しい関節の位置を算出する(下図参照)。 3.ドラッグ後座標と、2で算出した座標へ移動する(下図参照)。 4.付随するその他のパーツを移動。 5.描画。 以上です。 ※なお、swfの埋め込みは
wonderflの投稿をブログに貼る時、ちょっと気をつけなきゃないことがあります。 基本コピペで貼るだけで良いんですが、そのままでは表示されなくて、iframeのtitleを消すとうまく表示されるっぽい(2009-02-16現在)。 駄目な例 <div style="text-align:center;width:465px;"><iframe title="forked from: 3d wire - wonderfl build flash online" src="http://wonderfl.kayac.com/blogparts/3898c6a523e780433352fd0b29bd6e4545cd0f83" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wo
npmにmb_strwidthというpackageをpublishしました。 PHPの mb_strwidth() と同じ動きをする関数です。 https://www.npmjs.com/package/@demouth/mb_strwidth https://github.com/demouth/mb_strwidth console.log(mb_strwidth('𩸽定食食べたい😭')); // 15 // PHP 7.3.28 var_dump(mb_strwidth('𩸽定食食べたい😭')); // int(15) 動機 npmのpackageの公開ってどういう感じなのか知りたかったので、昔書いたgistを少し書き換えて公開してみました。 別にmb_strwidth()をJSで使いたかった訳ではないです。 参考にしたのはこちらの記事で、ほぼこの通りにやっただけです。 ht
携帯用のFlash「Flash Lite」はFLASHでの開発が一般的だと思いますが、私はFLASHでの開発を殆ど行ったことがない為、できればFlashDevelopで開発を行いたい。調査してみた結果、FlashDevelopでも開発できる事が分かり、簡単なサンプルを作成してみました。結構簡単でした。 忘れないようにメモ。 (環境ですが、WindowsのXPでもVISTAでもFlashDevelopのBetaでもRC1でも特に違いはなさそうです。) はじめに まず、FlashDevelopにてActionScript3のコンパイルに使用するのはAdobeが公開しているFlexSDKを使用していますが、ActionScript2の場合、MTASCというフリーのFlashコンパイラ(Motion-Twin ActionScript2 Compiler)を使用しているそうです。 っていってもFl
このページを最初にブックマークしてみませんか?
『demouth::blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く