読者です 読者をやめる 読者になる 読者になる

Observableの使いかた

最近Angular2を触る機会がありまして、
その際にServiceで定期的にhttpリクエストをして値が取れたらComponentに反映させるという処理を書きまして、
subscribeというものに初めて出会った訳であります。

とりあえず使い方だけメモしておきます。

@Injectable()
export class Service {
  dataSource = new Subject<any>;
  dataStreams = this.dataSource.asObservable();

  getData {
    this.http.get(url)
        .subscribe((data: any) => {
          // データソースのnextに値を入れる度に
          // ストリームのsubscribeに値が流れる
          this.dataSource.next(data);
        });
  }
}
@Component({ provider: [ Service ] })
export class Component {
  data: any;

  constructor(private service: Service) {
    // データソースのnextに値が入る度に
    // ストリームからのsubscribeに値が流れる
    this.service.dataStream
        .subscribe((data: any) => {
          this.data = data;
        });
  }
}

Androidアプリ間での通信方法例

目的

AndroidアプリAとBがあるとして、
AからBのServiceを起動し、BのServiceでの処理結果をAで受け取るための方法です。

概要

A: BのServiceをintentに指定して投げます。BroadcastReceiverのonReceiveにてintentからExtraを受け取ります。
B: AのBroadcastReceiverをintentに指定して、Serviceの処理結果をputExtraしてbroadcastします。

実装例

Aサイド

AndroidManifest.xml

<manifest package="com.sample.A">
    <receiver
        android:name=".AsampleBroadcastReceiver"
        android:exported="true" />
</manifest>

Aのサービスを起動させる

Intent intent = new Intent();
intent.setClassName("com.sample.B", "com.sample.B.BsampleService");
startService(intent);

Bからのbroadcastを受け取る
AsampleBroadcastReceiver.java

public class AsampleBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        int hoge = bundle.getInt("key"); // キーを指定してint型の値を受け取る
    }
}
Bサイド

AndroidManifest.xml

<manifest package="com.sample.B">
    <service android:name=".BsampleService"
    android:exported="true" />
</manifest>

Aに対してbroadcastする
BsampleService.java

int value = 0;
Intent intent = new Intent();
intent.putExtra("key", value);  // int型の値を入れる
sendBroadcast(intent);

Pythonで超簡単なWebサーバーの立て方

ドキュメントルートにしたいディレクトリへ移動して

$ python -m SimpleHTTPServer ポート番号

でwebサーバーが立ち上がる。

http://localhost:ポート番号

でアクセス可能。

C言語の文字列比較

C言語では「文字列」を扱う変数はない。

「文字」の集合として扱っているため、
文字列を比較する際はループで1文字ずつ比較しなくてはならない。

比較できない例

if (str == "hogehoge"){
    printf("合致!");
}else{
    printf("合致しない...");
}

比較できる例

int compare_string(char str1[255], char str2[255]){
    int i, len = strlen(str1);
    for(i=0;i<len;i++){
        if(str1[i]!=str2[i]) return 0;
    }
    return 1;
}

if (compare_string(str1, "hogehoge")){
    printf("合致!");
}else{
    printf("合致しない...");
}

numpy で 配列の次元数を取得する

メモ: numpy で配列の次元数を取得する

import numpy

A = numpy.array([1, 2, 3])

numpy.ndim(A)
>> 1

A.ndim
>> 1

の2種類ある。

自己紹介

業務

工学部情報系学科卒業してサーバーホスティング事業してる会社に入社
開発部署に配属
Web系の受託開発したりしなかったりで1年半
CakePHP2使ってる
最近はスマホアプリ作ってとか言われてIonic v2 で webviewのアプリ作ったりしてる
あとは同僚に勧められてPythonに興味出てきたからちょっとだけ触ってる

趣味

漫画とアニメ
心が死んでるのか、最近あんまり楽しめなくなってきてるから新しい趣味も追加したいところ

推しの漫画はチャンピオンでやってるスピーシーズドメインです。
エルフとかイカロスとか鬼とかドワーフとかが人間世界にいる学園ラブコメです。
ヒロインの風森さんがクール系を装いながらも無邪気で幼かったりでも主人公に対して母性的なところを見せていたりとても可愛いです。
あと土和アンリミテット(名前)ちゃんも可愛い。ヒゲが生えてる女の子を可愛いと思う時が来るとは思わなんだ......

スピーシーズドメイン 1 (少年チャンピオン・コミックス)

スピーシーズドメイン 2 (少年チャンピオン・コミックス)

スピーシーズドメイン 3 (少年チャンピオン・コミックス)

スピーシーズドメイン 4 (少年チャンピオン・コミックス)

スピーシーズドメイン 5 (少年チャンピオン・コミックス)

[まとめ買い] スピーシーズドメイン(少年チャンピオン・コミックス)

ブログ開始

ブログ趣旨

お仕事あんまりなくて経験不足&スキル不足なので、インプット&アウトプットするため。

現在の業務的にPHPJavaScript でのWebアプリ開発がメインかも。

あとSI系に派遣される会社に転職予定だから、JavaやらC#やらも増えると思う。

興味的にはPythonとか、深層学習とか勉強したい。