初めてのCSSアニメーション

大した作品ではないですが、一区切りついたので何かしら書いておきたいと思います。

完成品

ソースコード

github.com

作ったきっかけ

yui540さんkaitoさん がすごいcssアニメーションを作ってたのを見て、自分も作ってみたいと思いました。

感想

cssもhtmlも触ったことが無かったので、少しずつ勉強を進めていきながらアニメーションを作っていきました。

・最初は思い通りに動くアニメーションがなかなか作れませんでしたが、何度も試行錯誤してるうちにちょっとずつ出来るようになっていったのは嬉しかった!

・今回はゆっくりめのcssアニメーションを意識してみたりした。ただこれがすごいと思わせるような動きをさせようと思うとめちゃくちゃ難しい...

・部内コンで出してみたら思った以上に高評価でLT部門1位をいただいて驚きました。 ちなみに得た景品は...

git challenge #9 参加記

9月8日に開催された git challenge に参加しました!

git challenge とは

git challenge というのは、gitに関連した問題が複数出されるので、2人1組のチームで時間内に多くの問題を解決する大会です。

応募

普段gitをゴリゴリ使うことはなかったので、なんとなく落ちそう...みたいなことを考えていました。しかし運良く抽選に当たったので、嬉しすぎるあまり喜びの舞を踊っていました。(感謝)

前日

git challengeのslackに招待されたのでjoinしました。 slackのメンバーの中には知ってる猛者がたくさんいて、 「ほぇ〜〜」というお気持ちと「すごいイベントだなぁ〜」というお気持ちになりました。

あとはgitチートシートを眺めたりした。

当日

方向音痴なので、迷いながらなんとか到着しました。 f:id:choco_late3:20180912233240j:plain

会場に着いた後は、チームでペアになった人や社員の人と美味しいご飯を食べながら話をして、その後にgit challengeのチュートリアルを行いました。

本番

ぼくは1問目の方から解いて、ペアの方が難しい問題から解く方針で競技を始めました。 ペアの人がつよつよだったので何度か質問したり、いろいろggったりして問題を解いていきました。

途中で、下のリセットボタンを連打して運営を困らせる遊びをしました。(良い子はマネしちゃダメです)

結果は4~5位でした。ぼくがもう少し活躍できてれば...orz

懇親会

ご飯を食べながら、いろんな人とお話をしました。 特に社員さんとのお話が印象的で、コント(?)を披露してくださり、そのコントの内容が「ウチの職場は†アットホームな(自主規制)」という感じでセンスがありとても面白いものでした。

感想とか

gitの知識をたくさん吸収できたり、美味しいご飯を食べれたり、学生さんや社員さんとお話が出来てとても楽しかったです。1回だけしか参加出来ないのが本当に残念...

また、チームでペアだった、足を引っ張っても許してくれた プリキュアさん、本当にありがとうございました!!

最後に、社員さんとのお話で「git challengeを通じてgitについて興味を持ってくれると嬉しい」と仰られていたので、このブログを見てまだ参加してない人はぜひ参加してみて欲しいと思います。

ICPC国内予選2018 参加記

7月6日に行われた、ICPC国内予選に出場しました。

結果

ABCの3完で83位でした。

70位前後が予選突破のボーダーラインらしいので、あともうちょっとだったなぁと今も悔しがってます。来年は絶対に通るぞ(鋼の意志)。

チームodanのメンバー

学内でレートが高い順に選ばれたとかなんとか

chocobo

hm05

mkan

もともとチーム名はメンバー全員の名前を入れてゴニョゴニョする予定でしたが、「長い」と一蹴されてodanになりました。

予選本番前

すごい豪雨でJRが運転見合わせたりしてた。自宅参加も考えたけど、メンバーとのコミュニケーションを取るときに面倒になりそうだったので、頑張って会場へ向かいました。

予選本番

開始直後は、A問題をmkanさん、B問題をhm05さん、C問題をぼくが担当することにしていたので、C問題をグッと睨んでいた。

開始10分程度で解法が思い浮かんだのと、B問題の考察が少し時間がかかりそうだったので、mkanさんがA問題を通した後にコーディングを始めました。

が、計算量を考えていなかったので撤退。その後しゃくとりィが出来ることに気づいて実装したもののバグが入るなどして予選開始1時間弱でようやくCを通しました。

B問題が苦戦しているようだったので問題文を読むと、実装重い系だったので辛そうだなあと思った。少し時間が経つと、hm05さんが閃いてくれたことによりB問題が通りました。

その後はとりあえず一通り問題を読んだり順位表を眺めたりした。浮動小数点や幾何は厳しいのと、構文解析構文解析担当のmkanさんがNGを出したので、全員でD問題を考察することにしました。

考察が進んで枝刈りかメモ化再帰あたりでやってみようと方針は立ったものの、時間が足りず終了。3時間があっという間でした。

その他

こんなことをやってたりした

国内予選突破のおまじないで着ました。結果はアでしたが。

slackで絵文字が追加されると報告するbotを作った

タイトルの通りで、slackで絵文字が追加されるとそれをslackに報告するbotができました。

作った経緯

弊部のslackは絵文字職人が多いので、絵文字がぽこぽこ増えていきます。これまでは絵文字職人が追加する度にrandomあたりで報告していましたが、量が多くて面倒くさそうでした。そこで、それを解決するためにbotを作ろうと思いました。あとslackのAPIを叩いてみたかった。

ソースコード

github.com

適当に書いたので、もっと良い書き方があれば報告してくれると嬉しいです。

アルゴリズムは、

  1. 現在登録されているslack絵文字リストを取得
  2. 前回取得したslack絵文字リストとの差分をslackに報告する

というシンプルなものになっています。

感想

身の回りの課題をプログラミングで解決できたので楽しかった。こんな感じのプログラムをささっと組めるエンジニアになりたい。

RUPC2018

立命館大学で競プロの合宿があり、面白そうだったので参加してみました。

day1

A問題を解いてヒャッホイした後、圧倒的力不足から問題を眺める係をしていました。もっと勉強しなきゃダメだな〜〜と思いつつ、懇親会のポテトをいっぱい食べました。

day2

えらいので朝はちゃんと起きれました。

B問題をACした後、あみだくじの解法を教えていただいたのですが実装をミスして2WA。実装力も考察力も足りないことを痛感したけど、これだけでもRUPCに参加した意義はあったのかなと思った。
焼肉美味しかった。

day3

えらいので朝はちゃんと起きれました。

C問題を解いた。残りの時間は虚無になって過ごした。南無。

にぼ次郎いきたかった(定休日)。

感想とか

もっといろんな方々とお話がしたかったのですが、コミュ障なのでダメでした。Twitterで知り合っておくと、話しかけることが楽になりそうな雰囲気だったのでTwitterおすすめです。
あとコスプレしてる人やうさ耳つけてる人は可愛いということをお伝えしておきます。
来年もできたら参加したいです。

macのbashにpowerlineを導入する

忘れやすい鳥頭なので、備忘録的な感じで残しておきます。


powerlineのインストール

まずpowerlineに対応しているフォントをダウンロードします。下のURLに飛んで、Clone or downloadDownload ZIPを選択します。そうするとダウンロードが始まります。

GitHub - mzyy94/RictyDiminished-for-Powerline: Ricty Diminished with Powerline patched --- fonts for programming

ダウンロードしたファイルを解凍します。解凍したフォルダの中にpowerline-fontpatchedというフォルダがあるので、その中のフォントをインストールします。



powerlineをインストールします。ターミナルで以下のコマンドを実行します。

git clone https://github.com/b-ryan/powerline-shell  
cd powerline-shell  
python setup.py install  

次に.bash_profileの設定をします。

vim ~/.bash_profile

.bash_profileに以下を追記

function _update_ps1() {
    PS1=$(powerline-shell $?)
}

if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

これで終わりです。


コンフィグの設定

ターミナルで $ より左の表示の設定を変えたいときは、コンフィグファイルの設定をします。
まずデフォルトの設定を生成します。ターミナルで以下のコマンドを実行します。

powerline-shell --generate-config > ~/.powerline-shell.json

次に.powerline-shell.jsonの設定を変更します。人によって使いやすい設定が異なるので、各自がいい感じに書き変えてあげる必要がありますが、自分は以下のように設定しました。

vim ~/.powerline-shell.json
{
  "segments": [
    "virtual_env",
    "username",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "root"
  ]
}

powerlineの▶︎を取りたい

先ほどの.powerline-shell.json"mode": "flat"を追加します。

{
  "segments": [
    "virtual_env",
    "username",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "root"
  ],
  "mode": "flat"
}

配色を変えたい

結構めんどくさいです。
以下のコマンドを実行します。

cd powerline-shell/powerline_shell/themes/
cp solarized_light.py mytheme.py

mythemeのカラーコードの数字を変えていきます(カラーコード表はここ)。これも各自がいい感じにする必要があります。自分の設定は以下の通りです。

vim mytheme.py
from powerline_shell.themes.default import DefaultColor


class Color(DefaultColor):
    USERNAME_FG = 15
    USERNAME_BG = 4
    USERNAME_ROOT_BG = 1

    HOSTNAME_FG = 15
    HOSTNAME_BG = 10

    HOME_SPECIAL_DISPLAY = False
    PATH_FG = 220
    PATH_BG = 14
    CWD_FG = 0
    SEPARATOR_FG = 21

    READONLY_BG = 1
    READONLY_FG = 7

    REPO_CLEAN_FG = 0
    REPO_CLEAN_BG = 15
    REPO_DIRTY_FG = 1
    REPO_DIRTY_BG = 15

    JOBS_FG = 4
    JOBS_BG = 7

    CMD_PASSED_FG = 15
    CMD_PASSED_BG = 2
    CMD_FAILED_FG = 15
    CMD_FAILED_BG = 1

    SVN_CHANGES_FG = REPO_DIRTY_FG
    SVN_CHANGES_BG = REPO_DIRTY_BG

    VIRTUAL_ENV_BG = 15
    VIRTUAL_ENV_FG = 2

    TIME_FG = 15
    TIME_BG = 10

こんな感じになりました。 f:id:choco_late3:20180305192528p:plain

オセロAIのおはなし

この記事は、OIT Advent Calendar 2017の17日目の記事でした。


弊学はオセロプログラミングコンテストという、選手が作ったAI同士で戦わせあう大会が年に1回開催されていて、面白そうだなと思って参加してみました。

申し込んだときはAIというものが全く分かっていなかったので、先輩に教えてもらったりgoogle先生に調べてもらったりしながら開発していきました。やればできるものですね。(先輩に感謝)

バグがでてくる度に髪の毛が抜けていくような感覚でしたが、なんとか1完成させました。

大会当日は別のイベントへ参加することになったので、同級生にプログラムを託して結果を待つことにしました。

お昼過ぎたあたりに、同級生から「優勝したよ」というメッセージが届いたときは、すごく嬉しかった。

AI自体はまだまだ発展途上といった感じで、来年のコンテストに向けて改良したい...と思っています。最近は機械学習ディープラーニングが流行っているので、どっちにしようかなという感じ。


使ったアルゴリズム

nega_alpha

nega_maxalpha_betaを組み合わせたもの。

move_ordering

枝刈りが効率よく行われるように、探索する順番を入れ替えます。自分は速さ優先探索を用いました。

空所表

探索を開始する前に、石が置かれていない場所を配列に格納しておきます。終盤は石を置く場所がほとんどないので、高速化に役立ちます。


やりたかったこと

反復深化探索

ゲーム木の構造体を作っておけば良かった(怠慢)。

nega_scout と 置換表


 ぐ
 っ
  た

Probcut

難しかった。


その他

オセロを作ってるとき、makegirlsmoeが流行ってたので、それで生成したアイコンをAIのキャラクターにした2

参考になったサイト、本

オセロAI(odan's diary)
Visual C++ を使ってオセロを作ってみよう
ゲーム計算メカニズム (コンピュータ数学シリーズ 7)

オセロプログラム

https://github.com/chocobo777/othello


  1. 筋肉

  2. おたく