カテゴリー: programming

  • WordPress作業メモ

    学術研究機関向けシンポジウム管理システム developed with WordPress

    2015年版の開発

    TDD(PHPUnit)で進めた。
    当初、2ヶ国語(日本語、英語)で開発・運用していたが、複数言語でのコンテンツの更新が負担になるため英語メインに変更。必要に応じて日本語を併記。

    2017年版で機能追加

    1アカウントで複数の論文投稿(および決済)に対応。この部分でプログラムが若干複雑になり、決済のチェックも事務方での確認など手間が増えてしまう。
    ただしTDD(2015版)によるテストコードがあったので、改修作業は比較的スムーズに進んだ。

    2019版を開発開始

    MVCに関する記事を参考に、リファクタリングを進める。
    やはりここでもTDDに救われる。仮にテストコードがないとすると、ここまでたどり着けていないと思う。しかもストレスなく、というよりもどちらかというとモチベーション高めでリファクタリングを進めることができるのはわりと幸せな感じ。
    ただし、PayPalのAPIが開発の時期によってバージョンアップされていて、その対応(情報収集、試作)に結構な時間が取られるのがなかなかしんどい。

  • 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 が開催できればと思っています。興味のある方はぜひご協力をお願いします。

  • 先日の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 をクリック。

    以上です。

  • Visual Studio Codeを使ってみる – macOS

    Get Started Tutorialにそって進めてみる

    Getting Started with Python

    Python環境の確認

    Python 3.0 Release
    パッケージをインストール

    $ which python3
    /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
    $ python3 --version
    Python 3.6.5
    

    Visual Studio Code インストール

    Visual Studio Code

    python3 -m venv

    $ cd Hello
    $ python3 -m venv venv
    

    Running VS Code on macOS

    $ cat << EOF >> ~/.bash_profile
    # Add Visual Studio Code (code)
    export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
    EOF
    

    VSCodeを起動

    $ code .
    

    VSCode起動

    Configure Python Environment

    Configuring Python environments

    Command + Shift + P
    Python: Select Interpreter

    ./venv/bin/python
    

    Python3.6.5(venv)

    早速コードを書き始めると linter(pylint)のインストールを促される。
    そのままインストール。

    Successfully installed astroid-1.6.3 isort-4.3.4 lazy-object-proxy-1.3.1 mccabe-0.6.1 pylint-1.8.4 six-1.11.0 wrapt-1.10.11
    You are using pip version 9.0.3, however version 10.0.0 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    

    pipのアップデート
    最後のメッセージにしたがって、

    $ pip install --upgrade pip
    

    ひとまずの環境が整ったようなので動かしてみる。

    hello.pyを追加(編集)

    print('Hello World!!')
    

    VSCodeのterminalから

    $ source venv/bin/activate
    $ python hello.py
    

    Unit Testing

    Unit testing Python in VS Code
    Command + Shift + P
    で Command Pallete を開いて Unit と入力。
    Command Pallete

    Python: Run All Unit Tests
    

    を選択すると、画面右下に次の表示。
    Enable and configure a Test Framework

    青いボタンをクリックしてテスト環境の設定を進める。
    unittest

    テストコードをtestフォルダにまとめたいので test を選択。
    (testフォルダがなければ作成しておく。
    test folder

    testから始まるファイルをテストコードの対象に。
    test*.py

    出来上がった .vscode/settings.json

    ではコードを書いていきます。

    test/testCalc.py

    calc.py

    ステータスバーの [Run Tests] をクリックして [Run All Unit Tests] を実行。
    OUTPUT の Python Test Log に OK が表示されればOK。
    ただし、テストの2回目以降に、

    OK
    Unhandled exception in thread started by

    のような例外が発生する模様。
    しばらく様子をみます。

    [追記:2018.06.09]

    VS Code 1.24.0 にバージョンアップしたら上記の例外が出なくなりました。

  • AtomのPHPCSでWarning – WordPress

    AtomエディタでWordPressのプラグインやテーマを編集する際に、
    PHPCSのエラーが表示されるようになったので環境を見直しました。

    macOS High Sierra 10.13.4
    Atom 1.25.0
    linter-phpcs 1.6.8

    こちらの記事に感謝。
    WordPressのコーディング規約をPHP CodeSnifferでチェックしてPhpStormでもチェックと自動整形する

    composer で phpcs をインストール

    $ composer global require "squizlabs/php_codesniffer=*"

    WordPress用のコーディング規約をインストール

    $ git clone git@github.com:WordPress-Coding-Standards/WordPress-Coding-Standards.git \
     ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress

    コーディング規約をWordPressに登録

    $ phpcs --config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress

    コーディング規約の確認

    phpcs -i

    Atomのlinter-phpcs設定(executable path)

    /Users/(username)/.composer/vendor/bin/phpcs