ハッカーズチャンプル2016に参加して
今回は感想です。
ハッカーズチャンプル2016の開発合宿、カンファレンス、懇親会での感想を書きます。
今回は開発合宿の方から参加させてもらいました。
私はOpenCVを触ったことがあったので、画像処理を使って自分の認識したいものを認識させるというのを目標に取り組みました。
1日目は拾ってきたコードを改造したのですが、微妙に期待どおりに改造できず断念。
2日目はもう一度画像処理の基礎を復習し、土台を作成。
最終日は、間に合わず成果を出すことは諦めて、画像処理の知識を学習して終わりました。
合宿が開発である以上、失敗でした。
なぜ失敗したのかというのを考えると、3つほど原因があったのではと思います。
1.画像処理を過小評価し、知識のないまま取り組んだこと
2.どのような手順でどういう日程でという計画がなかったこと
3.失敗しても安心できる環境があったこと
私自身の考える失敗の原因です。
開発合宿は自分の得意分野で挑むのが良かったと反省しています(そのような分野は存在しませんが...)。
カンファレンスの部では内地の方を及びして、いろいろなお話を聞きました。
一番前に座っていましたが、理解が追いつかない場面が多く、日頃の勉強不足を痛感することとなりました。
やはり、簡単には情弱という称号を返上できなさそうです...
最後の懇親会では、いろいろな方の話聞くことができました。
できたのですが、ある方を一箇所に止めてしまったり、自分の聞きたいことばかりを夢中に聞いてしまって、迷惑をかけたかも...。
すいませんm(__)m。
この合宿を通じて、大学で興味の薄い分野の課題は作り込まず適当に提出することが多かったのですが、どのような課題であれ自分のできうる限りは作りこんで考えてやろうと思いました。
それが最終的には幅広い知識の持つことになり、新しいことを関連付けて学ぶ・理解することができるのだと信じています。
ハッカーズチャンプルの運営並びに参加者の皆様、ありがとうございました。
Python3、OpenCVセットアップ
OpenCVを触ることになり、Python3で公式チュートリアルをやりました
その中で、突然エラーを吐かれてその対処に3時間苦労した箇所があったためメモ代わりに書いておきます
OpenCV-Pythonのチュートリアル
OpenCV: OpenCV-Python Tutorials
OpenCVの導入はこちらのサイトを参考...というか言われたとおりにやりました
blog.amedama.jp
非常にわかりやすいサイトで個人的にこれくらいの記事を書きたいなと思うところです
順調に進み何事もなく終わると思いきや、特徴量の抽出の部分でエラーが!!
はじめはOpenCV3.0.0-Pythonのチュートリアルを試していたのですが、
>>> import cv2 >>> sift = cv2.SIFT() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'cv2' has no attribute 'SIFT'
調べていくと、OpenCV3.1.0-Pythonのチュートリアルがあり、同じ内容でコードが違うところを発見しました
よかった、これで終わるとと思いきや...
>>> import cv2 >>> sift = cv2.xfeatures2d.SIFT_create() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'cv2' has no attribute 'xfeatures2d'
アリャリャ??
そこで辿りついたのがこちらのサイト
danglingfarpointer.hatenablog.com
どうやらSIFTやSURFはOpenCV3から別のモジュールとして扱われてるみたい
brewでインストールする時に
brew install opencv3 --with-contrib --with-python3
としてあげればインポートできました
これだけに3時間も要してしまうなんて、私もまだまだ情弱のようです
私のTexの使い方
今日は私の普段Texの使い方について書きます。
大学生になると誰しもレポートに追われるのではないでしょうか。
私もつい先ほど、締め切り1時間を切った頃になんとか完成させて提出したばかりです。
思い返すと長い戦いだった...。
私の学部では専門科目はLatexでレポート作成が標準...というより強制されており、レポートにも苦戦しますがそれ以上にTexに苦渋を舐めさせられますね。
ただ、Texが嫌いというわけでもなく、基本的に専門でない授業もTexでレポートを書いています。
さる冬、私の学科ではEl Capitanにアップグレードした時、ローカルのTexが動かないという事態が発生!!
追い詰められ、悲鳴を上げる学生はCloud LaTexに移行し生き延びることができました。
しかし、なぜか私の環境ではアップグレードしても何も起こらなかった(たぶん?)のでローカルでやっています。
基本的にホームディレクトリ直下に.binというディレクトリを作り、ちょっとでも便利なコマンドを作ろうとした時期がありました。
その時に作ったしょぼいものですが、意外と役立ってくれていて今回のレポートも助けられたので書きます。
はじめにホームディレククトリ直下に.binディレクトリ(他の名前でもOK)を作成し、.zshrcにパスを記述してあげます。
mkdir ~/.bin echo 'PATH=$PATH:$HOME/.bin' >> ~/.zshrc
これで.binに実行ファイルを置いておくと、シェルがこのディレクトリを探しにきてくれます。
次にcmpl_texというファイル(これもなんでもよい)を作って、cmpl_texに以下のようなシェルを書きます。
vi ~/.bin/cmpl_tex
cmpl_texの中身。
#!/bin/sh platex $1.tex dvipdfmx $1.dvi open $1.pdf
あとは実行権限を与えてあげて、.zshrcを読み込ませれば準備完了!!
chmod 700 ~/.bin/cmpl_tex source ~/.zshrc
これで.texファイルをコンパイルしopenすることができます。
続いて、テンプレートの生成方法について書きます。
mkdir ~/.bin/file vi ~/.bin/file/tex_temple vi ~/.bin/create_tex chmod 700 ~/.bin/create_tex source ~/.zshrc
tex_templeとcreate_texの中身は以下のようになっています。
tex_temple
\documentclass[11pt,a4paper]{jsarticle} % \usepackage{amsmath,amssymb} \usepackage{bm} \usepackage{graphicx} \usepackage{ascmac} % \setlength{\textwidth}{\fullwidth} \setlength{\textheight}{40\baselineskip} \addtolength{\textheight}{\topskip} \setlength{\voffset}{-0.2in} \setlength{\topmargin}{0pt} \setlength{\headheight}{0pt} \setlength{\headsep}{0pt} % \newcommand{\divergence}{\mathrm{div}\,} %ダイバージェンス \newcommand{\grad}{\mathrm{grad}\,} %グラディエント \newcommand{\rot}{\mathrm{rot}\,} %ローテーション % \title{タイトル} \author{作者} \date{\today} \begin{document} \maketitle % % \section{セクション} ... ... % % \end{document}
create_tex
#!/bin/sh cat ~/bin/file/tex_temple > $1.tex
これでおそらくcreate_texでテンプレートのtexファイルが生成されるのではないでしょうか。
create_tex main % main.texというファイルが作られる cmpl_tex main % main.texをコンパイルしオープンする
すごくしょぼいことしかやっておりませんが、これが意外に役立ちました。
友人にはTeXShopを勧められたりもしましたが、今はこれでレポートを書いております。
最後までご覧いただきありがとうございました。
Webアプリケーション作りに励む(Mojolicious)
GWの出来事
私「くそーDjangoできねーー」(3週間の戦いの末...)
友人A「Golangがいいよ!!」
友人K「Mojoliciousがおすすめかな」
知人A「Node.js...いい(ボソ)...」
私 -> Go -> JS -> Perl( パッパカパーン )
ということで、そんなこんなありましてMojoliciousでWebアプリケーション作ることになりました。
はじめに、私がここまでこれたのはMojoliciousを進めてくれ、かつ教えてくれた友人Kくんのおかげです。ありがとうございます。
GWに初めてPerlをやり始めましたが、クセがあって面白いですね。
制作中のソースをGitHubでリポジトリ公開したのでURLを貼っておきます
とはいいましても、まだ手探りの状態でよくない部分であったり無駄な部分が多々あると思います。
自身を持って完成を間近に控えたときに、記事にしようと考えていますのでその時は目を通していただけると嬉しく思います。
やっとまともな記事が書け!!...............な予感
JavaScriptやってみた
生まれて初めてJavaScriptに触りました。
忘れもしない1年生の誕生日にサイ本を買ったあの日のこと...。
今まで手を出したことのない価格帯、そして分厚さに僕は興奮したんですよね。
結局1年以上たった今でも、現在進行形で本棚の肥やしとなってますが...。
今回は半額セールでこの本を購入してやりました。
確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ) : 狩野 祐東 : 本 : Amazon.co.jp
サイ本と比較するとイラストとが多いかったので、まあ1日時間をかければ一通り終わるじゃろうとね。
最終的に3日かかりましたが、これでJavaScriptをとりあえず読むことはできるようになったと思います。
とりあえず、やったことはアウトプットしようと思って、カウントダウンをするページを作ってみました。
スタイルシートはいつかに作ったものを適当に反映させただけです。
本を読んで試したりすると簡単なんですが、自分で作ろうと思うといろんなところで躓きました。
とりあえず、動きはしたのでひとまず第一段階かなというところ。
画面の隅にちょこんと表示させて、ちらっと確認したりと使ってみると以外と便利です。
ただ、今のままだとカウントダウンがマイナスまでいってしまうのと、例外処理を施していないのでNanになったりと、中途半端な状態です。
0になったら、音を出すなどの機能もつけてみたいと思っているので、スタイルシートも含め、ある程度できればGitHubに公開してみようかな(たぶん)。
ブラウザですぐに試せるのは、面白いと思いました。
時間を見つけてサイ本も読もうと思います。
目下、GitHubの勉強中(そういうものなのか疑問だが)なので、作ったものなどを公開していけたらいいと思ってます。
最後にちょっと、書いて終わります。
本の中にjqueryとAjaxに触れる機会があったのですが、前にあった授業での流れを思い出しました。
< ネットワークの授業 >
先生「君たちの中でAjaxとか触ってことない人はいないとおもうけど...」
私「(なんじゃそりゃ、ググる)」 -> 調べるけどよくわからん
先生「Ajaxを知らないとかは、恥ずかしいので知っといてくださいね」
私「(僕に言ってるの?ねえ、僕に言ってるんですか、先生?)」
いやー。
何も知らなかったんですね私。
お恥ずかしい。
いつになったら技術的な記事が書けるのやら...。
先は長そうです。
それでは。
~ 先生との戦い ~ ボロクソに言われる...
先生「好きなもの作っていいよ。君、何が作りたいの?」
私「えっと、思いつきません...」
先生「それは一番ダメな答えだ。なかってもその場で考えて何か言わないとダメ」
私「i、iPhoneアプリ」
先生「それはさっきダメって言ったじゃない」
私「え、っと」(ど、どうすれば)
今回は近況報告なので、そんなのいらないよという方はここでやめてもらうといいと思います。ただ、予感めいたものを感じるのですが、この ~ 先生との戦い ~ はシリーズになりそうです。
今年の受講科目に自分の作りたいもの(Webアプリケーション)を作るという内容のものがあります。ちょうどブログを始めた頃から、この科目と戦っているのですが、私にとってはかなりの曲者のようです。前期はこの先生・科目と戦っていくことになるのでしょう。これはその序章です。
忘れもしないあの日、戦いの火蓋が切って落とされた...
~ 第1回授業終わり ~
先生「ん〜、じゃあとりあえず、好きなWebフレームワークを選んでOauth認証できる状態のWebアプリケーションを作ってきて。あ、あとAnsibleで動かしてコードをプレゼンしてもらおうかな」
受講生「!!」
先生「ちょっと厳しいか?」
先輩(TA)「まあ、がんばれば1日でできるでしょう」
先生「そうだな。これが1週間でできない奴に、卒業して欲しくないな」
私はOSをFedora23、WebサーバをApache、そしてWebフレームワークにはDjangoを選択し1週間を過ごした...
しかし、私の能力は自身の予想を遥かに下回り、なすすべもなく撃沈した...
~ 第2回授業 ~
--- この日、受講生の半分がこの科目を取り消した ---
先生「じゃあ、進捗を聞こうか。何を作ってきたの?」
私「すいません、5日間格闘したのですが作れませんでした」
先生は、先輩(TA)と顔をあわせる。その顔は何故そんなこともできないのとでも言わんばかりだ。この瞬間、私は自身の能力が求められている段階に達していないことを悟った。
先生「そういうときは、先輩に聞くんだ。というより、君はもう聞かれる側のはずだ」
私「はい」
先生「まあ、いいよ。で、君は何をつくりたかったんだっけ?」
私「まだ、決まっていません。今回の課題がこなせなかったことから、能力不足で何が作れるのかを理解できていないんだと思います。Webの仕組みを理解するという意味でも、今回の課題を続けたいと思っています」
先生「ふーん、まあ、それもあるかもしれない。けど君はあれだね。車とか作る時センサーとかにこだわって、高性能センサーを作り込むんだけど結局車を作れないタイプの人だね。ま、頑張って」
私「...はい」
~ 第3回授業 ~
先生「じゃあ、進捗を聞こうか」
私「わかりました。前回の課題を引き続きやっていたのですが、Oauth認証の部分で詰まってしまい、解決できていない状態です」
先生「まだできてないの。先輩には聞いたの」
私「はい」
先生「誰に聞いたの?」
私「〇〇さんです」
先生「あれ、できなかったの?」
私「いえ、途中までは手伝ってくださって、あとはできるでしょと言われました。残りが簡単そうだったので、わかりましたと言ったんですけれど、そこから躓きました」
先生と先輩(TA)は前回同様顔をあわせる。その顔には息が抜けるような力のない英みが浮かべられていた。受講している同期に至っては、声を出して笑っている。いや、いっておいてなんだが我ながら間抜けだと思う。
先生「君みたいなの人は、逆に放っておきたいね。いいから、コードをちょっと映して」
そして、そのあとこってり絞られました...
.
..
...
文を読んだ限りだと私が何もしていないようですが、土日は一日中格闘してました。
ただ、結果が出せていないので何もしていないのと同じですが...
5.6時間Djangoさんと無計画に戦ってもいい結果が得られないことは、身をもって学んだので要点を絞って別の分野の知識を少しずつ補充していきたいと考えています。
さて、次のブログはVimについて書こうと考えています。サーバーを立てたりしないので、エディタはGUIのSublime Textを使っています。ただ今回がサーバー上での操作となり、普段使わないVimで作業効率ががくっと落ちています。ちなみに、ここでもつっこまれました...
先生「563行目見せて」
私「はい」(必死にスクロールする -> 行き過ぎる -> 戻す)
先生「何やってるの?」
先輩「環境が違うので慣れていないんだと思いますよ」
先生「...」
その行に一発でジャンプできる機能があるんでしょうとも。とりあえず、このままだとCUIでの作業ができないプログラマーになってしまうので、Vimの使い方を短期集中で勉強してきます。
一番楽しく、やりがいのある講義でもあり、一番向かう足取りが重い講義でもあります。まだまだ序章なので、先生を乗り越えて成長したいと思います。
Nishisi、Pythonを始める!!
Nishisiは今年の4月からPythonの勉強を始めました。
選んだ書籍はオライリー・ジャパンの入門Python3です。
入門 Python 3 : Bill Lubanovic, 斎藤 康毅, 長尾 高弘 : 本 : Amazon.co.jp
タプル?辞書?リスト??
え、セミコロンはいらない?インデントをしろ?
うむ、プログラミング言語はC言語から入ったのでちょっと苦労してます。
Pythonをはじめようと思ったのは、これがどうしてPythonで書かれている技術書が多かったからです。
book = 'Python'
while book == 'Python':
print("おっ、この本面白そう...ん? %S" % book)
print("Pythonできないや...諦めよう")
こんな感じです。
完全に心が折れた私は諦めてPythonを勉強することにしました。
余談ですが、今年の1年生からプログラミングの講義がPythonになるらしく、「私の時はC言語だったのに...」とちょっぴり落ち込んでます。
その講義にこっそりと忍びこもうと画策していたのですが、別の必修科目とかぶってしまい残念ながら物理的に計画は破綻してしまいました。
先生にメールしたところ、独習するならとpaizaを紹介してもらいました。
声しか聞こえないのですが、間違った時の美少女の声が可愛い...
じゃなくて!!このサイトにスキルチェックというのがありまして、受けてみたところpaizaランクCになりました。
Bに挑戦したところ、入力値によって正しい結果が出力される場合とされない場合の欠陥プログラムを書いてしまい散りました...。
せめて、どこがダメだったのか教えて欲しい。
この独自のランク制度が結構面白くて、ちょっと腕だめしをしたい方にはおすすめです。
目下の目標はPythonでAランクを目指すことにします。
結局私は何がしたいのか...。