コワーキングの記事も書かずにブログをほっといていました.
いつものことながら反省.
今回は勉強会の参加レポート
4/24フェンリルさんにてRoom Metro#16に参加してきました.
いつもは大阪での参加でしたが,
今回は訳あって東京での参加.
遅刻しました.
五反田からどこ行ったらいいのかわからない状態+Androidのセンサが暴走(単に現在位置がぐじゃぐじゃと変わっただけですが)
かなり遅れて参加しましたが,テレビ会議先の大阪の方々も元気そうでした.
なんかスーツ着てるスーツ着てる言われましたが.
それはさておき.
今回のテーマはもっとタッチ!
Windows8の売れ行きは不調ですが,
どうせ持っているならいろいろとタッチ処理を利用したものを作成したい!というのが人のサガ.
今回の講師は@yone64さん.
タッチの種類もさまざま.デバイスを感知して色々と処理を変えることができます.
そして画像の拡大縮小移動等の数学苦手な人にとっては痛い目を見る処理.
最後には文字認識!と行きたかったですが,最後までは残念ながら到達せず……
次回は@hr_saoさん.
C++のクライアント処理を容易に書けるようにするライブラリCasablancaについて
行う予定だそうです.
今回も遠隔地ではありましたが,非常に楽しく参加させていただきました.
また機会があればぜひ参加させていただきたいと思います.
フェンリルprpr!(フェンリルさんありがとうございました)
できれば大阪で参加したいなぁ(ボソッ)
Rのイベントを立ち上げたのにブログを書かないのはちょっともったいないと
思い,久々の更新.
R言語は統計処理の言語としてかなり注目されています.
まずインストールをしてみる.
から自分のOSにあったものをダウンロードする.
とりあえず動かすならLinux,Msc,Windowsでいけるが,
最新のパッケージを使うためにはOSへの対応がしっかりしているもののほうが良い.
パッケージがあるのでsudo apt-get install r-base を端末で入力すれば良い.
exeファイルを実行して次を連打してたら終わり
Macの環境構築は次のページとかが参考になるかと
イベント実施時にわかったことして,
Fedoraで取れる最新版は少し古いものだったりするので,
パッケージのインストールがスムーズに行かなくなる.
(対応した古いパッケージを持ってくる必要がある)
とりあえず動かしてみる.
t<-c(1,2,3,4)
t
[1] 1 2 3 4
データのインポートを直接コンソールで打つのは
しんどいのでRコマンダーというライブラリーを導入する.
[パッケージ]→[パッケージのインストール]を選択
ミラーサイトはJapanのどれかにして,OKを押す.
次に出てくるパッケージというウィンドウでRcmdrを
選択する.
Ubuntu
sudo apt-get install r-cran-*
を実行する.
その後にroot権限でRを動かして(端末でsudo Rと打てばok)
そこでlibrary(Rcmdr)を実行
Macでのインストールに関しては先ほど上げたすつーかさんの
ブログを参照してみてください.
Rコマンダーを入れると外部ファイルからのデータ取得,分析,
検定がGUIで行うことができるので楽.
次のイベントでは検定とか推定の話をできるようにしっかりと勉強中.
プログラミング生放送に参加してきました!
今回はプログラミング生放送の大阪に参加してきました!
以前からいきたいと思っていた勉強会だったので
開始から興奮状態!
しかも,プロ生ちゃんのストラップ+IT勉強会スタンプラリーの
ステッカーをゲット!テンションがストップ高状態でした.
今回の内容は4本の40分公園とLTが6人でした!
本来なら微妙な詳細を書くべきなのですが……
メモが全部飛びましたw
ということでうろ覚えな状態で書かせてもらいます.
まぁ発表自体は動画で見れますのでそちらのほうが手っ取り早いかと.
学生さんが(自分も一応学生といえば学生)かなり多かったです.
結構IT勉強会だと学生が少なかったりするものなのですが.
そして,近畿圏以外からの参加者も多数!
これがプロ生とクラウディアさんの実力か……!
発表の1人目は福岡NFCLabの運営者であるtredyさん!
NFCの歴史からしっかりと学ぶことのできるNFCを知らない人でも
わかりやすいプレゼンでした!
発表の二人目は初音玲さん!
空のテンプレートから作成するWindowsストアアプリという発表でした
初心者はグリッドアプリケーションから入るのではなく,
空のテンプレートから作成したほうが確かに作りやすそうだなぁと
昔から思っていたのですが,わかりやすい説明を聞いて
より一層そう思いました.
発表の3人目は大場@tworksさん!
Delphiが実はWin/Macでクロスコンパイルすることができるという
内容のお話.
一々別のOSに合わせて作ることなく共通のアプリケーションを作成できるという
点は非常に素晴らしいのですが……それをできるソフトウェアが10万……
便利な機能だからね.仕方ないね.
発表の4人目はクラウディアさん!
Windows Azureの魅力についてしっかりと語ってもらいました!
そしてLTに突入!
今回は6名の方のLTがありました.
どの方の発表も非常に興味深く,面白い発表でした!
(べ、別に今思い出そうとしてあんまり思い出せないから一般的なことを書いたわけじゃないよ?本当だよ?)
休憩時間中は3時間並んで買ってきてもらった限定ハッピーターンをいただいたり、様々なお菓子をいただいたりと,なんというか会話よりも菓子を貪っておりました。さすがコミュ障.(自画自賛)
え?クラウディアさんの名刺?もらえませんでしたよ?
理由は……
プレゼン中に思わずツッコミを入れてしまったからじゃないですかね?
相変わらず一言二言三言口が多く,TPOをわきまえた
ちょうどいいテンションになれないコミュ障なmid_fでございました.
多分今頃懇親会していると思う.次回参加までには多少はコミュ障直してきま……無理だな.
前回の記事の問題をJavaで解いてみた.問題については前回の記事を参照してください.
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test=sc.nextInt(); System.out.println(getprimenum(test)); } private static int getprimenum(int prime){ int count=0; int now=2; if(prime==1){return 0;} else{ while(now<prime){ if(primecheck(now)){count++;} now++; } } return count; } private static boolean primecheck(int testprime){ if(testprime==2){return true;} else{ for(int n=2;n<testprime;n++){ if(testprime%n==0)return false; } return true; } } }
考え方に関しても前回の記事を参照.結果としては20MBのメモリ使用率で995msecでクリア.
ちなみにCではメモリ使用率748KB,実行時間は46msec.
同じことに対してのコードであってもこういう風に違うという観点の話を大学でしないことが残念でならない.
プログラミング言語で何をやるかという観点も非常に大事だ.その一方で,プログラミング言語はどのような特性を持ち得ているのか
ということを考えるべきだ.
何をやるかとのたまうことは正直な話,誰にでもできる.
大学が目指すべきはそのアイデアを具体的な形にすることのできる技術についても考えることのできる人材なのだが……
その道は遠そうだと自らの大学のカリキュラムを見て思うのであった.
素数とは、1 と自分自身以外に正の約数を持たない、1 以外の自然数のことをいいます。
自然数 n が与えられるので、 n よりも小さい素数の数は何個存在するかを求めてください。
入力は以下の形式で標準入力から与えられる。
n
11
4
100
25
10000
1229
#include<stdio.h> int prime(int tester); int main(void){ int input; int count=0; int now=2; scanf("%d\n",&input); for(;now<input;now++){ if(prime(now)){count++;} } printf("%d\n",count); return 0; } int prime(int tester){ int count=2; if(tester==2){return 1;} else{ for(;count<tester;count++){ if(tester%count==0){return 0;} } return 1; } }
int prime(int tester);
で宣言をしておく.
そしてメイン関数で2から入力された数までの素数をカウントしている.
int prime(int tester)の中身は純粋な素数判定プログラム.
素数はその数(tester)と1以外では割り切れない数であるので,
2からtester未満の数でtesterを割った時に割り切れないということと同じである.
1が返り値であればtesterは素数.0が返り値であればtesterは素数でないということになっている.
javaとかは余裕があったらまた書いてみる.
知っている方のブログを見ると天下一プログラマコンテストなるものが
あるということを知り,アクセス.
もう終了してはいるが,提出することはできるので挑戦.
まだ8/29日8:00~20:00の予選Cが残っているのでまだまだ本選へのアタックは可能です.
今回は,予選Bの内容を少しやってみることに.
予選B1問目の内容はこちら.
いま、物が有る。
その数は 1 以上 127 以下である。
3 で割ると、 a 余る。 5 で割ると、 b 余る。 7 で割ると、 c 余る。
いくつ物があるとそうなるか小さい順に答えよ。
なんか問題がおかしい気がするが,(いくつものがあるってなんだ?)
とりあえず,入力と出力を見たらなんとなくわかった.
入力は以下の形式で標準入力から与えられる。
a b c
条件を満たす物の数を小さい順に改行区切りで出力せよ。
なお、行の終端には改行が必要である。
そして作ったコードはこちら
#include<stdio.h> int main(void){ int a,b,c; int test=0; int count=0; scanf("%d %d %d\n",&a,&b,&c); while(7*count+c<=127){ test = 7*count+c; if(test==0){count++;continue;} if(test%5==b&&test%3==a){ printf("%d\n",test); } count++; } }
入力の改行を完全に忘れてました.
何回かミスをした後に受理.
ここまでだと,よりスマートにやりそうな人がいそうなので,
プログラミング初心者の人に対しても理解できるように解説してみる.
まず,最初の#includeはおまじない.もう少し説明すると標準入出力を担当するstdio.hを利用する宣言とのことになる.大概のプログラミングでは使うからそこは置いておく.
次に3つの入力を得るための変数が必要になる.今回は範囲が決まっていて整数であるのでint型を3つ用意.testはあとで判定とかに使うための値を代入する変数.
さて,次はwhile文.繰り返し文であるが,7*count+c<=127をクリアしたら中に入っている処理を行うというものである.
今回は処理の回数を減らすために,7で割った時の条件に合致する整数が他の条件に合うかどうかを確認する.
問題としては,count=0かつa=b=c=0のとき,出力する数字は1以上であることが条件であるが,何の対策もしなければ0であってもこのままでは条件を満たしてしまう.次の倍数への対応をするためにcount++をしてcontinue文を入れる.continue文はその時点でその回の繰り返し処理をやめることを意味する.(continue文丘の処理は実行されず,再度繰り返しの条件文を判定し,処理を行う.)
あとは5で割った余りと3で割った余りを考えて,出力させれば終わり.
それではこれをjavaで書いてみる.
import java.util.Scanner; public class ProblemB1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] a = new int[3]; a[0]=sc.nextInt(); a[1]=sc.nextInt(); a[2]=sc.nextInt(); for(int count=0;7*count+a[2]<=127;count++) if(tester(a,7*count+a[2])){ System.out.println(7*count+a[2]); } } public static boolean tester(int[] a,int test){ if(test==0)return false; else if(test%5==a[1]&&test%3==a[0]){return true;} else {return false;} } }
判定の部分をtesterという関数を作ったところ以外はあまり変わりはない.
違いとしては入力を受け付けるところ.
Cでは入力形式の形でscanfをする必要があるが,JavaのほうではnextIntというメソッドで取れる.
Androidアプリの環境導入について投稿.
導入環境としてはWindows7.
Mac?(´・ω・`)知らんがな
必要なのはざっくりと3つ
とりあえずさっくりとやってみる.
Android開発のためにはJDKは5.0以上が必要.
Sun Developer Network のサイト(http://www.oracle.com/technetwork/java/javase/downloads/index.html)にアクセスし、
「Download JDK」をクリック.バージョンに関しては5以上だったら問題なし.
DLしたexeを開いて,あとは次でをクリック.
そうするとJDKのインストールは完了.
次はEclipseですがこれは日本語化したものを入れてある
Pleiades込のものを導入すればよい.
http://mergedoc.sourceforge.jp/#pleiades.htmlにアクセスするといろいろとバージョンがあることがわかる.
こういうものは最新版とっておきたがりの私なので,一番新しい「4.2Juno」をクリック
すると,次の画面が出てきてその中でも様々な用途で入っているものが異なっていることがわかる.
今回は,JavaのSDKが入っていて,Javaを開発できる形であればいいので,左から3番目の[Java]を選ぶ.(私は[Ultimate]選んだけど.Java開発できれば問題なし.)
そして,自分のOSがどちらかで32か64を選ぶ.JREはなしのものを選んでしまいましょう(Java Runtime Environmentの略.javaで開発されたものを実行するために必要なもののセットと思えばよし.JDKは開発するために必要なセット.)
既に,JREがある人はJREなしで問題なし.(JDK入れた時点でJREも入るので気にしなくてもいいとは思うが)
確認方法としては
コマンドプロンプトでjava -versionを打って,数字出てきたら入ってます.
eclipseがダウンロードできたらそのzipファイルをCドライブの直下に持っていきます.これは,別の場所だとパスが長くなってしまい,解凍ができないときがよくあるためです.
そして解凍(そこそこ時間かかる).完了したらeclipseフォルダから
eclipse.exeを起動させるとワークスペース(作ったプロジェクトとかの保存場所)をどこにするかを聞かれますが,この選択をデフォルトとし……の部分にチェックを入れてそのまま次へをクリックすると画面が出てきます.よかったよかった.
さて,次はAndroidの開発準備に移るわけですが,
http://developer.android.com/sdk/index.htmlで,Download the…と書かれているボタンの
下にあるother platformsをクリックし.Windowsでファイル名の最後に.zipと書かれたフォルダをダウンロード.
ダウンロードしたファイルをCの直下において解凍する.
そのあとにEclipseから[ヘルプ]→[新規ソフトウェアのインストール]を選択
そして作業対象に[https://dl-ssl.google.com/android/eclipse/]を入力すると次の画面となる.
もしならなかった場合は,作業対象の中身を[http://dl-ssl.google.com/android/eclipse/]とする.
そして全てを選択し次へ,
ライセンスの同意が求められるので同意して完了.
そのあとはEclipseを再起動しろと言われるのでEclipseを再起動する.
Eclipseが再び開くのでウィンドウ→設定からAndroidの項目を選択.
そしてSDKロケーションの部分に,先ほどC直下に置いたAndroidSDKのフォルダを指定.(解凍してそのままであればC:\\Android-sdk\android-sdkといった形になるかと思います.そこはご自身でご確認を.)
そして適用を押すと次のウィンドウが出てくる.
ここで,SDKマネージャを開く.
ここで,ToolsのチェックボックスとExtra,そして自分が開発したいAndroidのバージョンのフォルダのチェックボックスをクリックして右下のInstallのボタンを押す.(あとからでも追加できる)
これで完了.
基本的にMacも同じ要領でできるとは思うが知らない.
あとは左側のプロジェクトエキスプローラで左クリック→新規→プロジェクトで
Enterを押し,androidとでも打ったらandroidプロジェクトというのが出てくるはず.
次以降の更新でHello Worldとかを取り上げる.といっても非常に詳しいサイトが多くあるので自ら調べながらやってもらった方が身につくとは思う.
Perlの某イベントに参加しているのでその学習記録としてちょこちょこと書くことに.
環境としてはVMWare上でUbuntu12.10.(多分apt-getしなくても作れたはず……)
vimを使って書いていくわけですが,vim perl ○○.plと○○には適当な名前を入れて作っていきます(○の中にスペース入れるのは勿論駄目.)
内容はHello World.
use strict; use warnings; use stf8; binmode STDIN,"encoding(utf8)"; binmode STDOUT,"encoding(utf8)"; binomode STDERR,"encoding(utf8)"; print "Hello World";
これだとあんまり他の言語との差異がわからないので次は変数を使ってみる.
use strict; use warnings; use stf8; binmode STDIN,"encoding(utf8)"; binmode STDOUT,"encoding(utf8)"; binomode STDERR,"encoding(utf8)"; my $str ="Hello World"; print "$str";
CやJavaと違うのは変数の型を事前に指定しなくてもいいという点だ.一応Cも書いてみる.
#include<stdio.h> int main(void){ printf("Hello World"); }
変数を用いてみる.
#include<stdio.h> int main(void){ char s[100]; s="Hello World"; printf("%s",s); return 0; }
Perlの変数は楽なように見えて,これだと何の変数がどんな役割をしているかわかりづらいなぁと思ってしまう.まぁ,そこはまぁ人の感性によるでしょう.
文字の取り扱いはCよりも楽な気がするかな.それはまた別の投稿で……