Tuesday, April 23, 2013

勉強に対する価値観の違い

価値観というのはやっかいなものです。
なぜなら、本人にとってそれは自明のものであるのに対し他人とは異なることが多いから。
そして、多くの人は他人は自分と同じ価値観を持っていると想定しているのでめんどくさいです。

この価値観の相違は社会が変化することで生まれます。
社会が変化することで異なった価値観が形成され、衝突するというのはよくありますよね。僕も親とよく衝突する一人です。


今日は勉強に対する価値観の相違を発見したので、ちょこっと書いてみます。


勉強に対してよくいわれるのが「学生の本分だから」


このフレーズおもに大学生に対して使われると勝手に考えています(なぜなら僕がよく言われるから)
ですが、この表現僕にとってよく意味が分からないんですよね。


本分? = やらなきゃいけないこと?
社会的な立場によって本人のしたいことが抑圧される?


僕は本人がしたいことをするのが一番幸せだと思っています。
本人がしたいことに対して問題点を指摘するのは大歓迎ですが、この○○だから△△というのはどうしても納得できません。


どうして納得できないかを考えたところ、大学でする勉強への価値観が違うためだとの結論に至りました。
僕は大学での勉強を自分がしたいことを実現する手段の一つととらえています。


例えば、貧困問題を解決したい人が実際に貧困の現場に行って自分にどのような知識が不足しているかわかったからそれを学びに大学に行きたいというのが僕が考えるもっとも自然な大学へ進学する理由です。


他に考えられる理由は
1.社会的に認められたいから進学 → 社会的に認められたいという自分の欲求を実現するための大学進学
2.自分の興味あることについて学ぶのが好きだから → 自分がしたいことをするための大学進学

このような理由も理解できます


ですが、「学生なんだから勉強しなさい」と主張する人は勉強自体が目的になっているんだと思います。とにかく勉強すれば何でもいいよという考えです。


この大学での勉強という見方に違いがあるために僕は親が主張する「学生の本分は勉強」という主張にまったく共感しなかったんだと思います。別に勉強を目的とした勉強が間違っているとは思いません。それも高校までなら真だと思います


ですが、大学進学が義務ではなく、大学にいることが自分のしたいことを実現するための手段ではないという結論に至った場合は休学というのも選択肢の一つになるのではないのかなと思います。
(実は休学するという話について親ともめていますw 僕の場合ほかの事情もあって複雑なんですがねw)

Monday, April 22, 2013

aws, sdk php2でS3にアップロード

Amazon Web Servicesが提供するS3にファイルをsdk php2を使ってアップロードする仕方の紹介です。
ここを参考にしたので、もっと知りたい方はこちらを見てください。英語です
http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html

Case1: /var/www/htmlにsample.txtがある
 require "vendor/autoload.php";
 use Aws\S3\S3Client;
 
 $bucket = "Bucket name";
 $client = S3Client::factory(array(
  'key' => 'Your Key',
  'secret' => 'Your Secret Key',
  'region' => 'Your Region' ));
 //このclientの作り方はhttp://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html
 //こちらのリンクのCreating a clientを参考にしてください
 $client -> putObject(array(
  "Bucket" => $bucket,
  "Key" => "fromFopen.txt",
  "SourceFile" => "/var/www/html/sample.txt",
  "ACL" => "public-read"
 ));


これでアップロードできます。自分の環境に合わせて$bucketやputObjectの中身は変えてください。ポイントは"SourceFile"でアップロードしたいファイルを指定しているところです。

Case2: フォームで指定された画像をアップロードする

        //上と同じなので省略
 $bucket = "/*省略*/";
 $client = S3Client::factory(/*省略*/));
 $fileName = $_FILES["picture"]["name"];
 $filePath = "pictures/" . $fileName;

 if(move_uploaded_file($_FILES["picture"]["tmp_name"], $filePath)){
  $client -> putObject(array(
   "Bucket" => $bucket,
   "Key" => $fileName,
   "Body" => fopen(sprintf("/var/www/html/%s", $filePath), "r+"),
   "ContentType" => "image//*写真の種類、jpg, pngとか*/".
   "ACL" => "public-read"
  ));
 } else{
  echo "Not OK!";
 }

写真の時はなぜだか"SoueceFile"ではうまくいかなかったので、"Body"に変えました
これでアップロードできます^^

Sunday, April 21, 2013

置かれた場所で咲きなさいの前提条件

「置かれた場所で咲きなさい」

この言葉を聞いたことがある方はたくさんいるはずだ。今いる状況が酷でも自分で努力して何とかしなさい、頑張ってみなさいと励ますためによく使われる。


でも、この表現には一つ前提条件がある。それは「咲く努力ができる環境にすでにいる」ということ。
咲くと表してるので花で説明しよう。


花が咲くには条件がある。光だったり、栄養素だったり、水だったり。花が咲くにはまず咲く環境が整っていることが前提条件だ。花がどんなに努力しても、水がない砂漠、光が届かない暗闇に置かれたら咲くことはできない


これを人間の話に戻そう。やはり花と同様に人間にも咲くには環境が大事だ。もし今いる環境で頑張れないと思っている人にこの「置かれた場所で咲きなさい」といった言葉は、今の場所に居続けなきゃいけないとストレスを与えるだろう。


もし今の場所にいるのが心底いやだったら別に場所を変えてもいいんじゃないですかね?
場所を変えて心機一転で頑張ればいいじゃないですか。その場所を離れるという行動を起こせたのなら新しい場所でも何とかできると思いますよ、僕は



Saturday, April 20, 2013

AVPlayerが働かないときは

以下のような簡単なAVPlayerで音楽を流したいと思ったのになぜだかうまく行かなかったときの解決策

    NSURL *url = [[NSURL alloc]initWithString:@"http://localhost/social-alarm1/musics/sampleMusic.mp3"];
    AVPlayer *player = [[AVPlayer alloc]initWithURL:url];
    [player play];

*AVFoundation/AVFoundation.hは.hファイルで読み込みをしています。

これをこうすると僕の場合は解決しました。
.mファイル

@interface ViewController () {
    AVPlayer *player;
}
@end

@implementation ViewController

- (void)viewDidLoad {/*省略。何もいじってません*/}
- (void)didReceiveMemoryWarning {/*省略。何もいじってません*/}

- (IBAction)startMusic:(id)sender {
    NSURL *url = [[NSURL alloc]initWithString:@"http://localhost/social-alarm1/musics/sampleMusic.mp3"];
    player = [[AVPlayer alloc]initWithURL:url];
    [player play];
}
@end
言葉で書くとするなら、「AVPlayerのインスタンスを.mファイルの最初のinterfaceで書くとなぜかうまくいく」ですね

Friday, April 19, 2013

awsのphp sdkインストールではまる

Amazon Web Servicesのphp sdkではまったのでどうやってインストールしたのか書いておきます
こちらの公式ドキュメントにそってインストールしていきました
http://docs.aws.amazon.com/awssdkdocsphp2/latest/gettingstartedguide/sdk-php2-installing-the-sdk.html(日本語)

参考にさせてもらったリンクはこちらです
--http://www.1x1.jp/blog/2013/04/aws_sdk_for_php2_auto_scaling.html
--http://blog.suz-lab.com/2012/11/aws-sdk-for-php-version-2composer.html

以下のコマンドではまりました。

php composer.phar install

このコマンドを投げたときにこのような文が表示されてインストールされないんです
  [Seld\JsonLint\ParsingException]                                        
  "composer.json" does not contain valid JSON                             
  Parse error on line 1:                                                  
                                                                          
  ^                                                                       
  Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 
結局このエラーの原因は正しいcomposer.jsonファイルを編集していないからでした。
以下のコマンドで正しいcomposer.jsonファイルを開き、jsonを書き込みましょう

sudo vim /home/ec2-user/composer.json
//以下を書き込む
{
  "require": {
      "aws/aws-sdk-php": "*"
  }
}
これでばっちりです^^

自分の思い

ちょっと思ったこと。


僕は初音ミクとインターネットが好きだ。好きな理由はこれらのプロダクトが今まで関わりがなかった人たちをつなげたからだと思う。


初音ミクなんて本当にすごい。作る人がいて、pvをつける人がいて、それを歌ってしまう人がいる。初音ミクという作品がなかったらつながらなかった人たちがつながる。
だから、Google Chromeの初音ミクのCMには本当にしびれた。最高だった


インターネットも本当にすごい。僕がインターネットやプログラミングに興味を持ったのはインターネットである人のことを知ってからなんだけど、絶対に知り得ないであろうはるか上にいる人たちを知ることができる。パソコンでつながる。ハンパない


僕が本質的に作りたいものは今まで関連がなかった人たちをつなげて、そのつながった人たちを夢中にさせるプロダクトなのかもしれない


時々自分の本質がひょこっと顔を出すときがある。もしかしたら今回はそれが起きたのかもしれない

Thursday, April 18, 2013

RDSにphpから接続

この2日間くらいにサーバーとドメインを用意してネットワークの構築を行っていました
これから僕が使っていくのは、こちらのリンクになります→http://social-alarm.co/
.comはすでに申し込まれていて取得できませんでした

今回の記事はその過程でAWSのデータベースにphpから接続できなくてはまったのでそのphpからデータベースに接続する方法です

なかなか回り道したのですが、こちらの方のリンクの手順に従えば接続できるようになるはずです^^→http://www3441ui.sakura.ne.jp/wordpress/?p=479

Friday, April 12, 2013

NSLocalNotificationのサンプル

スリープ状態でもバイブと音でアプリの更新情報を教えてくれるあの機能です
NSLocalNotificationでネットワークにつなげることはできず、デバイスだけで完結してしまっている機能なので、facebookのようなメッセージがあったことを知らせるnotificationはPushNotificationで調べてください
(Notificationのapple公式ドキュメント => https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf)
日本語です

ここではLocal Notificationの使い方を忘れないようにメモしておきます。
(参考にしたサイト => http://ameblo.jp/porcom-yokoyama/entry-11134501691.html)
コピペですww問題があったら消します

    NSDate *now = [NSDate date];
    NSDate *notifyTime = [now dateByAddingTimeInterval:10];
    
    UILocalNotification *notify = [[UILocalNotification alloc] init];
    
    notify.fireDate = notifyTime;
    notify.timeZone = [NSTimeZone defaultTimeZone];
    notify.hasAction = YES;
    notify.alertBody = @"時間です。";
    notify.alertAction = @"起動する。";
    notify.soundName = UILocalNotificationDefaultSoundName;
    
    [[UIApplication sharedApplication] scheduleLocalNotification:notify];

上の参考リンクではNotificationの削除の仕方も載っているので、参考にしてください

Thursday, April 11, 2013

進捗状況3

進捗状況です。一番の変更点はUser Interfaceの変更です。
今こんな形です


Sunday, April 7, 2013

誰の人生を生きている?

本当に自分の決断は自分が下したと言い切れるだろうか?



確かにアドバイスはいただいた、でも最終的に決断を下したのは自分だ。と100%自信を持って言い切れるだろうか?



もちろん全ての人が自分の決断により生じるすべてに責任をもつ重みを背負うべきだとは思わない。



その人自身が現状に満足しているならどこにも問題はない



でも、現状に不満があって、何か解決策を探しているなら、もしかしたら解決策は自分の中にあるのかもしれない。



その解決策を選ぶことを自分自身に許してみよう。きっと世界が変わるはずだ




Saturday, April 6, 2013

xcodeで非同期通信

前回の投稿で非同期通信の仕方ができるようになりたいと書いたのですが、やってみたら意外とすぐできたので書いておきます
- (IBAction)asynchronousConnection:(id)sender {
    NSString *query = [NSString stringWithFormat:@"sample=%@", @"sample"];
    NSData *queryData = [query dataUsingEncoding:NSUTF8StringEncoding];
    
    NSString *url = @"http://localhost/sample/index.php";
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
    [request setURL:[NSURL URLWithString:url]];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:queryData];
    
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    [NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"receive response");
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSError *jsonError;
    NSMutableArray *returnedData = [[NSMutableArray alloc] init];
    returnedData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
    NSLog(@"%@", returnedData);
}
- (void)connectionDidFinishLoading: (NSURLConnection *)connection {
 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    NSLog(@"finish connection");
}

Friday, April 5, 2013

UILabelを透明にする

背景に画像を使用していて、その上にラベルをおきたいときてありますよね。
でも、直接おくとラベルのフレームのところだけ白くなりかっこわるい。。。ということでUILabelの背景を透明にする方法です


//プログラムから追加する方法
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 40)];
    label.text = @"Sample text";
    label.backgroundColor = [UIColor clearColor];
    [self.view addSubview:label];

    //hファイルにすでに宣言されている場合
    self.label.backgroundColor = [UIColor clearColor];

こんな風に描けばOKです

Thursday, April 4, 2013

objective-CでのHTTPリクエストの簡単なサンプル

手っ取り早く言ってしまうと、サーバーと通信するための簡単なプログラムです。
形式は決まっているのに、なかなか覚えないためメモ
* こちらは同期通信になっております。
* 非同期通信はこちら→xcodeで非同期通信


    NSString *query = [NSString stringWithFormat:@"id=%@&date=%@", user_id, date];
    NSData *queryData = [query dataUsingEncoding:NSUTF8StringEncoding];
    
    NSString *url = @"http://localhost/social-alarm/sample.php";
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
    [request setURL:[NSURL URLWithString:url]];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:queryData];
    
    NSURLResponse *response;
    NSError *error;
    
    NSData *result = [NSURLConnection sendSynchronousRequest:request
                                           returningResponse:&response
                                                       error:&error];
   NSString *string = [[NSString alloc]initWithData:result encoding:NSUTF8StringEncoding];
   NSLog(@"%@", string);


こんなプログラムを実行するとurlに設定したurlにqueryを加えてサーバーへ送ることができます。
このやり方は同期通信といい、サーバーからのレスポンスをが帰ってくるまではなにも実行されないのが欠点です。僕も通信している間にくるくる回るやつが表示されるプログラムにしたい( ̄ω ̄;)

php側では普通に以下の方法でクエリーからのデータを取得できますよ(^^)/


$id = $_POST["id"];
$date = $_POST["date"];

参考 => http://libro.tuyano.com/index3?id=569004

Tuesday, April 2, 2013

XAMPP macのphp.iniの設定参考資料

http://ingwer-design.com/blog/php/xampp-for-mac-os-x2.html
この方のサイトが見やすくて参考になった

日付を取得・比較

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat  = @"yyyy/MM/dd";
    NSString *str = [df stringFromDate:[NSDate date]];


時刻も取得したいときは
df.dateFormat = @"yyyy/MM/dd HH:mm:ss";
以上!

追加:NSStringとNSDateの変換

NSDate → NSString

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    
    NSString *dateString = [formatter stringFromDate:date];

NSString → NSDate

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    
    NSString *dateString = @"2012-03-23";
    
    NSDate *dateDate = [formatter dateFromString:dateString];


今回はこちらを参照→http://plaza.rakuten.co.jp/hiroymyan/diary/201004070001/

日付を比較

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [[NSDateComponents alloc]init];
    
    components.year = 2013;
    components.month = 10;
    components.day = 3;
    
    NSDate *date = [calendar dateFromComponents:components];

    NSComparisonResult result = [date compare:[NSDate date]];
    if (result != NSOrderedDescending) {
        return YES;
    } else {
        return NO;
    }

NSOrderedDescendingのほかにNSOrderedSame, NSOrderedAscendingがある。
参考→ 年や日などを指定して NSDate を作成する
参考→objective-Cでの日付の比較について

過去の日付を取得


// 5日前のNSDateを取得
[NSDate dateWithTimeIntervalSinceNow:-5*24*60*60];