LINE,Twitterに投稿する機能をつける(Android)

iosとAndroid ios の場合 iosだとSocial.frameworkを使って簡単にLINE,Twitterやfacebookへの共有ができる。 またfacebook SDKを利用しなくてもURL以外の情報も設定可能。 ずるいよ(´ω`) Android の場合 Androidの場合intentなどで連携が出来る。 ここでは簡単な方法としてLineやtwitter、facebookとの連携は暗黙的intentを使って行う。 facebookの場合はfacebookSDKを利用しないとURL以外の情報は投稿不可能。 そのため実用性が低いので、ここではfacebookは説明しません。 では本題のAndroidでLINEやTwitterへの投稿機能を暗黙的intentで呼び出すコードです。 LINEへの投稿 String uri = "line://msg/text/投稿したい内容"; Intent intent = null; try { intent

mongodbから日本語で全文検索するためにElasticSearchをインストールする

mongodb での全文検索 mongodbで日本語で全文検索したい!と思ってもこれが残念ながら未だ非対応です。 参考URL そこでElasticSearch プラグイン(MongoDB River + Kuromoji Analysis)を利用します。 ElasticSearchからプラグインを色々使ってmongodbから全文検索する感じです。 そのためにいろいろとハマったのでメモ的に書いていきます。 必要なものは以下です。 mongodb JDK (Java Development Kit) ElasticSearch MongoDB River Plugin (プラグイン)(mongodbの接続用) Kuromoji Analysis Plugin (プラグイン)(日本語形態素解析) 環境はCentOS 6.

Puppetを使ってシステム管理をする

Puppetとは Pueppetとは自動システム構成管理ツールです。 サーバとクライアントがあり、サーバから各クライアントにマニフェストファイルで命令することで 各ソフトのインストールなどを実行して環境を構築します。 それではインストールしていきましょう。 環境 環境は Cent OS 6.3 で行います。 今回、Puppetサーバ と Puppetクライアントは別マシンで実行させます。 Puppet サーバーマシンのホスト名を設定する sudo vi /etc/hosts 以下を追加する 127.0.0.1 puppetserver localhost sudo vi /etc/

Drawableのコピーを作成する(Android)

Android で Drawableを使っているとシャローコピーではなく、 ディープコピーが欲しくなることがあります。 wikiから引用します。 シャローコピーとは 浅いコピーを指します。 変数が値を指す場合は値がコピーされます。 もしも変数がアドレスを指すならば、シャローコピーされた変数はアドレスを持ちます。 ※アドレスを指すとはAndroid JAVAで言うとオブジェクトを継承したもの全てを指します。 ディープコピーとは 深いコピーを指します。 実はディープコピーではデータはアドレスと共にもう一度コピーされます。 AからBへディープコピーした場合、お互いに影響を与えることがありません。 しかし、コピー速度はシャローコピーより遅いです。 実際のコードでは以下のようになります。 例としてここではDrawableにGrayScaleをかけています。 DrawableをシャローコピーしてGrayScale Drawable a = Drawable.createFromStream(context.getAssets().open("path/to/img&

楽天API用Androidクライアントを作ってみた

表題の通り楽天API用のAndroidクライアントを作成してみました。 楽天API 実装はメソッドチェーン風です。 → 初めてのAndroidライブラリの作成と公開だったのでいろいろ大変でしたが、 なんとかJCenterに公開出来てよかったです(´ω`)b しかしJCenterの承認?許可?に24時間くらいかかったわけですが・・・(汗) 以下はREADMEに書いてありますが、一応。 使い方 dependencies { compile 'biz.devalon.stella:rakutenapiclient:0.0.7' } Github 未対応APIについて OAuth認証が必要なものは省いています。 いつか対応できたらいいな・・・。 なぜIONを選んだか このライブラリのHTTP接続部分はIONを利用しています。 本当はRxAndroid+Retrofitでかっこよく作りたかったのですが、 以下の理由によりやめました。

Visual Studio C++ で std::bad_alloc対策

std::bad_allocとは std::bad_allocが出た場合、ヒープ領域が足りていないことを意味しています。 ではヒープ領域とはなにかというとnewやallocでメモリを動的に確保する際に使用されます。 例えばマルチスレッドで大きい画像を解析しようとしたりすると発生することがあります。 Visual Studio ではデフォルトで1MBが割り当てられています。 回避策 これを設定変更するにはソリューションプロパティでヒープ領域を設定することができます。 また、プリプロセッサを追加することでも回避出来ます。 以下のコードは例としてHEAPとSTACKに5MBを割り当ててみます。 #pragma comment(linker, "/HEAP:5242880") #pragma comment(linker, "/STACK:5242880") しかし、マルチスレッド上ではヒープを多く使うことは競合が発生し、

Puppet Manifest の書き方

Puppetの簡単な説明 PuppetとはRubyで作られているシステム自動管理ツールです。 競合としてChefなどがあります。 例えばひとつのサーバでサービスを稼働して、 容量が足らないのでもう一つ増やすとなった場合簡単にコピーを作成することができます。 しかしコマンド実行のマニフェストが独特な構文のため、実際に利用することを断念することが多いため、 構文について説明します。 パッケージのインストールする yum install git Puppet Manifest package { 'git': ensure => 'installed', # provider => 'yum', # 使用するプロバイダ yum, gem ... } ユーザを作成する useradd puppetuser Puppet Manifest user { 'puppetuser': home

TextViewからDrawableを作成する(Android)

ImageViewからDrawable取得 ImageViewであればGetDrawableで取得可能。 TextView TextViewだとGetDrawableは存在しない。 今回説明するのはこちら。 ではどうするか とりあえずTextViewを作成。 TextView textView = new TextView(context); textView.setText("test"); 上記のtestと書かれたDrawableがほしいとする。 たとえば たとえばこのDrawableとアプリのassets配下の画像を重ねたいとします。 ちなみにtestと書かれたTextViewは動的に変更されるとし、 先にレイヤーリストを作成しておくことが出来ない状況とします。 まずはassets配下の画像を読み込み、Drawable(BitmapDrawable)を作成します。 backgroundDrawable = Drawable.createFromStream(context.getAssets().open("

Androidでios風Dialogを表示する

iosのダイアログは格好いいですが、Androidのはいかんともしがたいところがあります。 さらにTimePickerDialogについては問題があったりといろいろありますね。 カスタムダイアログでiosぽくする ということで完成表示はこんな感じです。 Activityクラス とりあえずボタンで表示するとしてイベントを登録します。 Dialogクラスはインスタンス生成したらshowで表示するだけのインターフェースです。 final Activity self = this; ((Button)findViewById(R.id.button)) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DialogLikeIos dlg = new DialogLikeIos(self); dlg.

Webviewの読み込みページ最後尾を判定する(Android)

WebViewで読み込まれたページの最後尾までスクロールした時の判定方法です。 まずはWebviewを継承した独自Webviewを作成します。 public class WebViewEx extends WebView{ public WebViewEx(final Context context) { super(context); } public WebViewEx(final Context context, final AttributeSet attrs) { super(context, attrs); } public WebViewEx( final Context context, final AttributeSet attrs,

Googleの日本語フォントを自サーバに置いて読み込む

グーグルの日本語フォントですが、WEBフォントのため表示に若干の遅延が起こることがあります。 そこで自分のサーバにフォントを置いて読みこむようにしました。 /* * Noto Sans Japanese (japanese) http://www.google.com/fonts/earlyaccess */ @font-face { font-family: 'Noto Sans Japanese'; font-style: normal; font-weight: 100; src: url('./../fonts/Thin.woff'),url('./../fonts/Thin.eot')

Android Linuxのプロセスメモリ管理 その2

今、私たちはメモリ領域や、空き領域を知っています。 実機があれば adb shell ps と打ってみましょう。 VSSとRSSの列が見えるはずです。   VSS(henceforth VSS)はプロセスが必要とするメモリの量です。   RSS(Resident Set Size)は物理メモリに位置する本当に存在するメモリの量です。   (メモリ確保の要求がされたもの)。 上記のようにVSSとRSSの違いの主な理由はデマンドページングです。 では、全てのRSSサイズを足してみましょう。 面白いことにmeminfoの総メモリ・サイズよりも大きいはずです。 例えば、Androidでリンク前のオブジェクトがあったとします。 オブジェクトはプロセスで共有されています。 そしてRSSサイズはそのオブジェクトのサイズもまた含みます。 そういうわけでRSSの総サイズはメモリ・サイズより大きいのです。 より深くRSSについて知るために、以下の例を見てみましょう。 空のプログラムを作り、

REST APIにRxAndroid とretrofitで並列アクセス

c88でエンジニア系の本を買って興味を持ったのでRxAndroidを試してみました!! RxAndroidとは RxAndroidはRxJavaのAndroid用の拡張モジュールです。 RxJavaは主に非同期処理を行うことが出来るライブラリです。 またObserverパターンに踏襲しているため、 サードパーティーのライブラリとの連携も可能です。 ECMA6からJavascriptに標準搭載される予定のPromiseみたいなものです。 ここではPromise.whenみたいなことをやろうとしてます。 jQueryを使うとこんな感じです。javascriptは簡単ですね♪ $.when( $.getJSON(baseUrl+"Tokyo"), $.getJSON(baseUrl+"Kyoto"), $.getJSON(baseUrl+"Osaka"), $.getJSON(baseUrl+"Okinawa"), $.getJSON(

gulp plugin 作成とKii Cloud

なぜ なぜプラグインを作ったかと言うと、 Kii CloudのカスタムAPIを作ろうと考えていたのですが、 Kii の仕様上、コードファイルとフックファイル1つずつしかデプロイ出来ず、 だからといってひとつのファイルに書いていくのも現実的ではないため、 gulpでデプロイすることにしました。 Kii Cloudへのデプロイ (イメージ) 以下のような流れでデプロイすることになると思います。 コードファイル(js)をひとつにまとめる フックファイル(json)をひとつにまとめる 完成したファイルをデプロイする 1についてはjavascriptをまとめるプラグインがあるからいいのですが、 2のjson形式のファイルを作成するプラグインが良さそうなのがなかったため、 今回作ることにしました。 ソース gulp-unite-json "use strict"; var _ = require('underscore')

Android Linuxのプロセスメモリ管理 その1

Androidのメモリ管理について調べていたら、わかりやすいページがあったので翻訳しました。 ここからの文章はYhcting氏のサイトを翻訳し、若干の補足を加えたものです。 原文 まずはじめに、ここではシェルコマンドによる説明は避けます。 なぜなら、この環境下(Android Linux)ではシェル(bash, tcshなど)が完全に機能することを期待出来ないからです。 Linuxのメモリーについて話す前に、メモリーについての基本的な概念について確認しましょう。 (この記事はkernel 2.6.29 について書かれています。) メモリーには以下の四つのタイプが存在します。 private(heap) clean : アプリケーションに使用される。 private(heap) dirty : ザイゴート(zygote)に割り振られ、

Idiorm & Parisでマスター/スレーブ

Idiorm & Parisとは Idiorm & Paris とは PHP で作られたORMです。 軽量なFrameworkなどと連携されていることが多いです。 使いやすいので最近使うことが多いですが、 未だに読み方がわかりません・・・。   イディーオーアールエム? アイディアイオーアールエム? ORMとは Symfonyなどで言うとDoctrineやPropelなどやActiveRecordのことです。 IT業界にいればどこに行っても耳にタコが出来るくらい聞くことになると思います。 基本的な使い方は置いておきます。 ここで説明するのは Idiorm & Parisでマスターとスレイブでコネクションを分ける方法です。 接続コネクションを意識しない初期化 ORM::configure('mysql:host=localhost;dbname=test'); ORM::configure('username',

Visual Studio 2008 で自動的にC#.NETのコメント文を生成する

Visual Studio 2008で動作確認しています。 C#.NETでのみ利用できます。 たとえば こんな関数があったとして、このマクロを実行すると こうなります。 Visual Basicのソースを載せます。 Imports System Imports EnvDTE Imports System.Diagnostics Imports Microsoft.VisualBasic Imports Microsoft.VisualBasic.ControlChars Imports System.IO Imports System.Collections.Generic Public