ブログ

  • Coderetreat 参考資料

    Conway’s Game of Life

    ライフゲーム(Conway’s Game of Life)
    TDD & Conway’s Game of Life by Jeremy Bytes

    Kata

    Kata Catalogue – Coding Dojo

    CodeKata

    In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.

    Kata01: Supermarket Pricing

    As a group, software developers don’t practice enough. Most of our learning takes place on the job, which means that most of our mistakes get made there as well. Other creative professions practice: artists carry a sketchpad, musicians play technical pieces, poets constantly rewrite works. In karate, where the aim is to learn to spar or fight, most of a student’s time is spent learning and refining basic moves. The more formal of these exercises are called kata.

    PyCarm

    Step 3. Testing Your First Python Application

    英語タイピング

    インターネットでタイピング練習 – 英語タイピング

    Online IDE

    Qiita – オンラインでプログラミングして実行できるサイト

    Unity3d

  • Ehime.rb 2018-11-19

    修正: 2018-11-21
    ループの場所を間違えていました。下が修正後。

  • Ruby 環境 – macos local

    参考にさせていただきました。
    Qiita: anyenv上のrbenvでRubyのバージョンを最新化する

    $ cd ~/.anyenv/envs/rbenv/plugins/ruby-build
    $ git pull origin master
    $ rbenv install -l
    $ rbenv install 2.5.3
    $ rbenv versions
    $ rbenv global 2.5.3
    $ rbenv rehash
    $ ruby -v
    $ anyenv update
    

    bundler

    $ bundler -v
    $ gem install bundler
    

    Workspace

    $ mkdir workspace
    $ cd workspace
    $ rbenv local 2.5.3
    $ bundle init
    
    $ vi Gemfile
    ( gem "rails" を有効に)
    $ bundle install --path=vendor/bundle
    $ bundle exec rails -v
    $ bundle exec rails new blog
    $ cd blog
    $ rails server
    http://localhost:3000/
    
    $ gem install rails
    $ rbenv rehash
    $ rails -v
    

    gitlabを使う場合のキー生成について補足

    コメントにメールアドレスを入れると良さげ。
    Getting permission denied (public key) on gitlab

    念のため公式のドキュメントを確認。
    Generating a new SSH key pair

    ssh-keygen -t rsa -C "your.email@example.com" -b 4096 -f id_rsa_gitlab
    
  • Swiftメモ

    めも

    • Button.setTitle
    • Timer.scheduledTimer
    • AVAudioPlayer
    • UserDefaults
    • UINavigationController

    画面遷移

    • Viewのコードを書くSwiftファイルを追加(HogeViewController)
    • Main.storyboard -> ViewController
      • Editor -> Embed In -> Navigation Controller
      • Navigation Controller が追加される(画面遷移をナビゲーションするためのクラス)
      • ViewController に Navigation Item が追加される
    • Object Library -> ViewController をエディタエリアに追加
    • 新しい View の Identity inspector -> HogeViewController
    • Date Picker を配置

    設定画面

    • DatePickerのバグ対応
      • 1回目のValueChangedはイベントが発生しない。
      • datePicker.setDate() すると良さそう。

    Swift – UITest

    Understanding UI Testing using iOS, Xcode 9 and Swift

    Identity inspector

    Accessibility -> identifier でIDをセットしてみる。

    IDの問題ではなくてテストの順番で今どのViewを開いているかが問題?
    でもなくて、
    setUp() で 毎回、
    XCUIApplication().launch()
    しているのでSliderの値が変わっていると、Labelの内容も変化させているので、
    初期値の Label ではなくて、Slider に合わせた値がView上に残っているため、
    操作によって変化しない ID が必要、ということでした。

    ###Swift – Slider by step

    (stackoverflow)UISlider with increments of 5

    code:swift
     let step: Float = 5
     @IBAction func sliderValueChanged(sender: UISlider) {
        let roundedValue = round(sender.value / step) * step
        sender.value = roundedValue
        // Do something else with the value
    
     }
    

    Swift – UserDefaults

    UserDefaults.standard
    register(defaults:)

    Swift – Layout

    Auto Layout Guide
    Simple Constraints
    Adaptivity and Layout

    横に部品を2個配置した場合の設定例など。
    Views with Intrinsic Content Size

    ボタンをbottomに寄せれば良さそう。
    ラベルは中央。

    Labelの配置例

    Label.centerX = Superview.centerX
    Label.top = Superview.centerY
    Label.leading = Superview.leadingMargin + 80
    

    Auto Layout Localization:
    Fixed leading and trailing constraints may cause clipping,
    one of them should have a constant ≥ standard space.

    上のWarningが出る場合は、Size Inspector -> Constraints のなかで leading / trailing が固定値(=)になっているものを ≥ に変更する。

    Label, Button を縦に配置

     Safe Area.trailing ≥ rightButton.trailing + 57
     Label.centerX = centerX
     Label.top = CenterY -50
     Label.leading = Safe Area.leading + 162
     leftButton.top = Label.top + 105
     LeftButton.centerX = centerX
     LeftButton.leading ≥ Safe Area.leaging + 100
     rightButton.leading ≥ Safe Area.leading + 57
     rightButton.centerX = centerX
     rightButton.top = leftButton.bottom + 25
    

    上を改善

     Label.centerX = centerX
     Label.centerY = CenterY -50
     Label.leading = Safe Area.leading + 162
     leftButton.top = Label.top + 105
     LeftButton.centerX = centerX
     LeftButton.leading ≥ Safe Area.leaging + 100
     rightButton.leading ≥ Safe Area.leading + 57
     rightButton.centerX = centerX
     rightButton.top = leftButton.bottom + 25
    

    ボタンを横に並べてみる

     Safe Area.trailing ≥ rightButton.trailing + 93
     Label.trailing = rightButton.trailing
     Label.leading = leftButton.leading
     Label.centerY = centerY - 40
     leftButton.lastBaseline = rightButton.lastBaseline
     leftButton.centerX = centerX - 55.5
     leftButton.top = Label.bottom + 73
     leftButton.leading ≥ Safe Area.leading + 93
     rightButton.centerX = centerX + 55.5
     rightButton.width = leftButton.width
    
  • GDCR 2018 in 松山を開催しました

    イベントページ
    Global Day of Coderetreat 2018 in Matsuyama

    ツイートまとめ(togetter)
    GDCR 2018 in Matsuyama

    会場はこちら
    The 3rd FLOOR
    ご協力ありがとうございました。

    ランチ、ドリンク、デザートは1Fのグレイズさんにお願いしました。
    とても美味しかったです。ありがとうございました。

    CodeRetreat は、1日かけてプログラミングのスキルアップを目指すイベントで基本的にプログラマーは無料で参加できます。会場やランチ、おやつなどにかかる費用は、スポンサーを募ってまかないます。ご賛同いただける企業の方、個人の方がいらっしゃいましたら今後のイベントへのご協力をお願いします。

    ペアを組んで1日に5から6セッション行います。セッション毎に書いたコードを消します。各セッションでペアを入れ替えます。参加者は使いたいプログラミング言語の環境(テストフレームワークを含む)を各自用意して、ペアで共有します。

    今回のイベントではオブジェクト指向設計を重視する方向だったので、そのあたり自分自身まだまだトレーニングが必要と感じました。
    でも、セッションを重ねるたびに、とても楽しい、面白いという感想が多く聞こえて、松山で3度目の開催になりますがとても充実した良いイベントになったと思います。参加されたみなさんのおかげです。

    あと、時差の関係でイベント終了後になりましたが、スペイン(Valencia)の会場とHangoutで繋いで無事バトンを渡すことができました。

    今後は、年1回のGDCRとは別に、もう少しカジュアルに CodeRetreat が開催できればと思っています。興味のある方はぜひご協力をお願いします。

  • 初めてのスペイン語

    今週末の GDCR (Global Day of CodeRetreat) の最後にスペインの会場と繋ぐことになりまして、せっかくなのでスペイン語のあいさつぐらい勉強しておこうかと。

    ¡Hola! ¿qué tal?
    How are you?
    こんにちは。ご機嫌いかが。(konnichiwa gokigen ikaga)

    Muy bien
    I’m fine.
    元気です。(genki desu)

    Buenos dias.
    Good morning.
    おはようございます。(ohayou gozaimasu)

    Buenas taldes.
    Good afternoon.
    こんにちは。(konnichiwa)

    Buenas noche.
    good evening. / Good night.
    こんばんは。(konbanwa) / おやすみなさい。(oyasumi nasai)

    Gracias.
    Thanks.
    ありがとう。(arigatou)

    De nada.
    You are welcome.
    どういたしまして。(dou itasimasite)

    ¡Que tengas un buen día!
    Have a nice day.
    良い一日を。(yoi ichinichiwo)

    Buena suerte.
    Good luck.
    頑張ってね。(ganbattene)

    Adiós.
    Goodbye.
    さようなら。(sayounara)

  • JAWS-UG愛媛 第18回勉強会 に参加しました

    JAWS-UG愛媛 (日本 Amazon Web Serviceユーザ会愛媛)第18回勉強会
    昨日参加してきました。

    AWS初心者向けハンズオン!
    セキュアでスケーラブルなWordpressのサイトを構築してみよう。

    なかなかのボリュームで、途中で集中力が切れて心が折れそうになりましたが、ほぼ全員が完走という、ものすごく充実した勉強会でした。

    一部、トラップ?があって、その場しのぎの対応でなんとかやり過ごしたのですが、隣に座っていたOさんからのサーバープロセスに関する指摘があってモヤモヤしていたので、ec2インスタンスのみ作り直して確認してみました。

    /var/www/html 以下のファイルの所有が
    apache:apache
    となっている割に、nginx の worker process が nginx ユーザーなので wp-config.php が生成できない?

    と思ったのですが、nginx から php を動かすのに php-fpm を使っていて、



    とすることで wp-config.php の生成も含めて、WordPressの更新ができました。
    というのが本日(23日)午前中の作業。
    で、午後にもう一度ハンズオン用のイメージでインスタンスを作り直したところ、

    html が最初から apache:apache になっていて、難なくWordPressのインストールが完了しました。
    もしかして、この間(午前から午後)にハンズオン用のイメージが修正された?
    ちょっと様子がわからないのですが、今公開されているイメージであれば、WordPressのインストール(wp-config.phpの生成)で引っかかることはなさそうです。

    [追記:2018.12.29]
    自分が使っていたリージョンが間違っていたようです。東京リージョンにあるイメージを使えば問題なさそうです。

  • JBL Flip 3 の アップデート – Bluetooth Speaker

    ちょうど3年前に購入した BTスピーカー JBL Flip 3 ですが、バッテリーの持ちが悪くなった様子。
    何か情報はないかと検索したところ、
    「バッテリーのセルが複数あってそのバランスが取れていないのでは?」のような書き込みがあったので、充電せずに放置してみようかと。 (未確認です。m(..)m

    ついでに、同じスレッドにファームウェア更新の情報があったので、公式サイトからダウンロードして更新しておきました。

    [追記:8月22日]
    下記の手順ですが、日本語のサポートにあるソフトウェアアップデートの方が簡単でした。
    Android / iOS からアップデートできます。
    JBL アクティブスピーカーのソフトウェアアップデート

    [追記:9月13日]
    充電せずに放置すると、1メモリ分ほど復活することもありましたがそれ以上の改善はなく。
    で、故障したものを放置して、新しいのを買い直すのもどうかと思って修理に出しました。
    2日ほどで見積もりが届き、バッテリーの故障(交換)とのこと。
    サービスセンターへの送料(元払い)と修理費用を合わせると、新しいモデル(Flip 4)を買うよりは少し安いくらいですが、
    お気に入りのスピーカーなので、これでしばらく使ってみようと思います。

    以下、PC(Windows)によるアップデート手順。

    PC(Windows)によるアップデート

    JBL Flip 3
    ページ中ほどの Manuals & Downloads を開いて、
    “Firmware USB update tool for JBL headsets and JBL portable speakers for Windows”
    をクリックしてzipファイルをダウンロード。(UpdaterはWindows用のみ)

    インストーラーを実行

    解凍して Harman Update.exe を実行。
    AGREEMENTの画面が表示されるので、CONTINUE / I ACCEPT をクリック。

    CONTINUE / I ACCEPT

    JBLを選択。

    JBLを選択

    Portableを選択。

    Portableを選択


    Flip 3 を選択。

    Flip 3 を選択


    Flip 3 の電源を入れて、USBケーブルでPCに接続。
    Volumeの + と Bluetooth ボタンを押して15秒ほど待つ。

    Flip 3 を接続

    接続できたら Upgrade をクリック。

    Upgradeを実行

    Upgrade進行中…

    Upgrade進行中

    Upgrade(5.7 -> 7.1)が完了。

    Upgrade完了
  • 先日のTDDBCのおさらい – Android Studio

    先日高松で開催されたTDDBCにPHPのTAとして参加しました。
    事前の素振りがちょっと足りなかったみたいで、部分的にぎこちない説明になったかもしれません。m(..)m
    ですが、参加者の皆さんにはとても学びの多い貴重な経験になったと思います。これをきっかけにより良いプログラミングについて取り組んでいただければと思います。

    ということで(?)、TDD本を読みながらJavaでおさらいをしてみました。

    環境はAndroid Studio(3.1.3)

    確認したかったのは、コードに変更があった際のテストの自動実行(automatic rerun)。

    Toggle auto-test のボタンを有効にしますが、その前に、
    Preferences… -> Build, Execution, Deployment -> Compiler
    を開いて「Make project automatically」にチェックを入れておきます。

    これでコードを編集すると、手を止めたところで自動的に ビルド -> Test が走りました。

    以上、参考まで。

  • Cloud9でユーザーを招待 – AWS

    メモ書き程度ですが AWS Cloud9 の環境にIAMユーザーを招待する手順。

    共有用のIAMグループを作成

    グループ名: c9group(任意)
    ポリシー名: AWSCloud9User

    共有用のIAMユーザーを作成

    ユーザー名: c9user(任意)
    ユーザーをグループに追加: c9group(任意)

    Cloud9管理用のIAMユーザーでログイン

    ユーザー名: c9admin(任意)
    所有ポリシー: AWSCloud9Administrator

    cloud9のIDEを開いて、右上の Share をクリック。
    AWS Cloud9 に関するよくある質問 – 環境の共有

    Invite Members に作成したIAMユーザー名を入力して Invite をクリックして進める。

    招待ができたら、共有用のIAMユーザーでログイン。
    cloud9のサービスを開いて Shared with you を選択。

    共有された環境の一覧から Open IDE をクリック。

    以上です。