万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    万年素人のjQueryへの挑戦 and so on

    jQueryの使い方

    クラス名の取り方

    alert($('.class'));
    alert($('#id'));
    

    SQliteのテーブル構成確認

    select * from sqlite_master where type='table' and name='テーブル名'; 
    

    enchant.js

    HTML5やJSでできる面白そうなゲームライブラリenchant.js。
    参考URL

    hamlRailsで使う

    http://haml.ursm.jp/getting-started

    jQueryで紙芝居な動き

    Rails3上で動かそうと以下のサイトを参考にコード書いたが動かん!
    cssも設定せんといけんからだ。
    http://www.skuare.net/test/jzindexgal.html

    あと、画象は上からではなく下から順に読み取ってるかも?

    自分で最小構成を作った。
    公式サイトからjQueryをダウンロードする。

    jquery-1.6.1.min.js」恐らくこんな名前
    「min」と「そうでない」の2種類あるみたいけど、jQueryを自分で修正しない限りminで大丈夫なはず。

    ・まずはHTMLファイルを準備 ※juery-1.6.1.min.jsは読み替える

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Demo for - 'Create a unique Gallery by using z-index and jQuery'</title>
        <link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />
        <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
        <script type="text/javascript" src="js/demo.js"></script>
      </head>
      <body>
        <!-- 実際のコード-->
        <div id="pictures">
          <img src="images/picture1.jpeg" alt="" />
          <img src="images/picture2.jpeg" alt="" />
          <img src="images/picture3.jpeg" alt="" />
          <img src="images/picture4.jpeg" alt="" />
          <img src="images/picture5.jpeg" alt="" />
        </div>
        <div class="grid_3 alpha" id="prev">
          <a href="#previous">&laquo; 前へ</a>
        </div>
        <div class="grid_3 omega" id="next">
          <a href="#next">次へ &raquo;</a>
        </div>
        <!-- 実際のコード-->
    
      </body>
    </html>
    


    ・画象を用意する
    →今回はこれらを用意しました。
     picture1.jpeg〜picture5.jpeg
    ※imagesフォルダに入れる

    JavaScriptを用意
    jsフォルダを作って、ダウンロードしたjQueryを放り込んで今回のdemo.jsを作りdemo.jsの中には以下を記載

    
    $(document).ready(function() { //perform actions when DOM is ready
      var z = 0; //for setting the initial z-index's
      var inAnimation = false; //flag for testing if we are in a animation
    
      $('#pictures img').each(function() { //set the initial z-index's
        z++; //at the end we have the highest z-index value stored in the z variable
        $(this).css('z-index', z); //apply increased z-index to <img>
      });
    
      function swapFirstLast(isFirst) {
        if(inAnimation) return false; //if already swapping pictures just return
        else inAnimation = true; //set the flag that we process a image
    
        var processZindex, direction, newZindex, inDeCrease; //change for previous or next image
    
        if(isFirst) { processZindex = z; direction = '-'; newZindex = 1; inDeCrease = 1; } //set variables for "next" action
        else { processZindex = 1; direction = ''; newZindex = z; inDeCrease = -1; } //set variables for "previous" action
    
        $('#pictures img').each(function() { //process each image
          if($(this).css('z-index') == processZindex) { //if its the image we need to process
            $(this).animate({ 'top' : direction + $(this).height() + 'px' }, 'fast', function() { //animate the img above/under the gallery (assuming all pictures are equal height)
              $(this).css('z-index', newZindex) //set new z-index
                .animate({ 'top' : '0' }, 'fast', function() { //animate the image back to its original position
                  inAnimation = false; //reset the flag
                });
            });
          } else { //not the image we need to process, only in/de-crease z-index
            $(this).animate({ 'top' : '0' }, 'fast', function() { //make sure to wait swapping the z-index when image is above/under the gallery
              $(this).css('z-index', parseInt($(this).css('z-index')) + inDeCrease); //in/de-crease the z-index by one
            });
          }
        });
    
        return false; //don't follow the clicked link
      }
    
      $('#next a').click(function() {
        return swapFirstLast(true); //swap first image to last position
      });
    
      $('#prev a').click(function() {
        return swapFirstLast(false); //swap last image to first position
      });
    });
    

    ・さらにmain.csscssフォルダを作って入れる。
    main.cssに以下を記載する

    /* relevant for the tutorial - start */
    #gallery { position: relative; }
      #pictures { position: relative; height: 408px; }
      #pictures img { position: absolute; top: 0; left: 0; }
    
      #prev, #next { margin-top: 30px; text-align: center; font-size: 2.0em; }
    /* relevant for the tutorial - end */||<
    
    
    <h3>BPStudy#45<h3/>
    
    Wi-fi
    飛んでいる無線から位置を判別
    
    サーバー側にHotSpotのデータベース
    必要に応じてダウンロード
    ・周辺のデータを取得するために、一度はデータ通信が必要
    ・iOS3.2から〜
    
    
    GPS
    iPadからGPSの精度が上がっている
    他のセンサーと併用で精度が上がる
    
    
    デバイスごとの違い
    iPhone
    
    
    CoreLocationサービスの使い方
    CoreLocationフレームワーク
    CLLocataionManagerオブジェクト
    Delegateパターンで通知
    
    位置情報の区別はない
    ・使いこなす上で大事なポイント
    APIは一つ、GPS
    
    CLocationManagerの構成可能なプロパティ
    ・desiredAccuracy
     ・必要な制度はどれくらいか?
     ・この値によって使う方法が変わる
    
    delegate側の処理
    
    GLLocationManager
    Your App Object
    <CLLocation〜〜〜>
    
    地図を更新したり〜〜
    
    GLocationObject
    緯度経度 GLCoodingnate2D
     ・軽度 latitude 軽度 longitude
    ・高さ
    ・横方向精度・縦方向精度
    ・スピード・進んでいる方向
    、タイムスタンプ
    
    
    サービスの種類
    3つ
    ・標準位置情報サービス
    ・Significant Location Change
     だいぶ位置が変わったら知らせる
    ・Location Region Monitoring
     特定の位置に入ったら知らせる
    
    ユーザーの承認
    :プライバシー
    
    位置情報を使うアプリケーションはユーザーの許可が必要。設定アプリで確認
    
    これまでは、トライしてエラーをdelegateで
    
    
    その他の注意点
    エラーが起きた場合、しばらく
    バッテリーを使いきってしまう
    Mapkitは独自の〜〜
    
    
    iPS 4の位置情報アプリ
    
    
    バックグラウンドで動かす
    サスペンド状態
    
    Infaplstに1行追加するだけ
    Requested〜〜〜
    
    ・NSTimerを動かさないのが困る
    定期的な処理はできない
    エラーができたら止める。10秒後に試す→来ないかもしれない
    
    BGでの動作での注意
    バッテリには昇進の注意を
    可能ならSignificant Location Changeに切り替える
    ディスクに保存しすぎない
    →けどメモリも使いきらない
    ローメモリ・ワーニングはこない
    
    BGでの動作で注意することは?
    バッテリには細心の注意を
    可能ならSignificant Location Changeに切り替える。精度は下げる。
    
    ユーザへの通知にはLocal Notification
    アプリが殺されることに対処。
    永続的な〜〜〜
    
    BGでのでの動作で注意することは?
    牧歌的な時代はおしまい
    アプリ起動時に位置情報サービスを不通に起動しっぱなしは止める
    
    サービスの動作を
    
    
    位置情報アプリのライフサイクル
    ・BGにいるアプリは殺される
    ・殺されたアプリでも、一条号を取得すると復活させれる
    ・位置に変化がない限り復活しない
    ・アプリは自分で〜〜
    
    位置情報アプリのライフサイクル
    。復活するのは、Significant Location Change、およびRegion Management〜〜
    
    位置情報アプリのライフサイクル
    ・継続的に〜〜
    
    位置情報取得の用途
    ・Fetch Location 現在地取得
     今との地点にいるか。精度の問題。
    Detect Area 現在地域取得
     MapViewで最初どこを表示するか
    Track Location 現在地追跡
     過去からの軌跡も参考に
    
    Fetch Location 現在地取得
    ・現在地を特定する
    ・ある程度の精度を要求される
    ・一瞬では絶対におわらない
    ・非同期処理になる
    ・精度が足りなくても特定できるあ場合がある
    
    位置情報の注意
    
    ・得られた制度情報にいるわけではない
    ・精度を半径とした情報は
    
    Detect Area
    同期で取得がいい
    
    Trac Location 現在地追跡
    
    トラッキングの考え方
    ・矛盾しない限り精度を下げる必要はない
    ・速度から次にいきそうな場所を特定できる
    ・緯度経度の中にいるわけではない
    
    仮想の場所を作って追跡する
    
    
    ■実例:駅ベルに見る位置情報の使い方
    アプリ内で複数のCLLocationManagerは必要か?
    ・あまりよろしくない雰囲気
    ・ユーザーの承認もアプリ単位
    ・最初に使うLacMgrが変わるとpromptが変わるというのも変
    ・モデルがdelegateなのは使いづらい
    
    アプリの中にはCLLocationManagerhaが一つだけなのが綺麗。
    
    ・PPGLocationService
    
    を生成、管理、delegateを兼ねる。
    複数のPPGLocationService
    
    ・PPGLocationClient
    KVO版みたいな感じ
    
    ・Tracker
    駅ベルのコア。PPGLocationClient
    距離によって精度を段階的にアップ
     最初は数キロ、近くなったらbest
    表示を担当するビューとは分離
     表示に必要な値をプロパティに
    バージョン2で複数駅に対応
    
    工夫&苦労
    ・地下鉄にはどうやっても弱い。
    ・理論上可能、実際には間に合わない。
    ・前の駅を完治したら鳴らすか?
    ・BGでタイマーが使えない
    
    BGで出来ることは少ない
     音を鳴らしたければ事前に準備
    
    
    KVOを使う
    →サーバサイドで使っているとない
    精度を細かく出来る
    Notificationだと大雑把になりがち
    明確なイベントはNotificationでOK
    値の変更の監視はKVOで
     ChangeNotificationみたいなのは怪しい
    
    KVOを使う
     1:Nの監視ができる 1:1はDelegateでいい
     関係を弱くするのに有効
    
    位置情報のデバッグ
    ・PPGLocationServiceに実装
    ・8の字を描きながらウロウロするロジックを実装
    ・NSTimerよる議事実装なのでBGでは動作しないのがネック
    
    DEBUG HACK
    ・BGに回るときにタスクを実行すれば10分間の猶予はもらえる
    
    ・PingPig
    関心空間のiPhoneライブラリ
    
    http://basuke.com
    @basuke
    
    簡単と思ったが開発すると難しい
    
    中国は精度が違う
    Wi-fiは多い 上海では使えない
    
    10秒間に処理を返さないと殺される
    
    ・自己紹介
    
    HNさぼてん
    年齢0x1d
    出身関西
    所属:Java-ja、Wicker-ja
    肩書き:Jenkinsコミッタ
    
    ■Jenkinsについて何か
    
    ・Jenkinsのクラスタリングのすすめ
    CIとは
    継続的インテグレーション(Continous Integration)の略
    XOのベストプラクティスの一つ
    システムのインテグレーション作業を開発の〜〜の
    
    具体的には
    チェックアウト→コンパイル→UnitTest→インスペクション→パッケージ→結合テスト→デプロイ→システムテスト→チェックアウト・・・・
    繰り返していくのがCI
    
    できるだけ頻繁に行う
    
    CIを回したときにアラートを上げるのがフィードバックを返す
    
    CIを使うメリット
    成果物の品質の保証
     ビルドやテストが通らない、といった開発時の不具合が先送りになりにくくなり、早期発見しやすく成る
    
    
    個人定期に考えるメリット
    ・関心ごとの分離
     一度に複数のことを対処することはよくない
     全ての予測するのは現実的ではない
     人間が行わなければならない仕事に注力できる
    
    ・テスト資産
     テストを書くようになる
     テスト戦略について考えるようになる
    ・リソースの有効活用
    ・複数の環境
    
    何から始めればいいか?どうやるか?
    
    Jenkinsとは
    ・OSSのCIツール
     メインの開発者は川口佳介さん
    
    
    みんながテストをがしがし書いていく
    ローカルでの実行でも時間がかかる場合は〜〜
    
    
    スローテスト問題
    ・テスト実行に時間がかかりすぎる
     テスト実行数の増加によるところ
     非効率なテスト
     依存関係
    
    
    解消方法
    ・テスト自体のパフォーマンスチューニング
     TODO定期なテストは捨てる
     DBなどはモック化
    ・jobのスケーリング
     早く終わる物、価値の高いものを優先
    ・Jobを細分化
     並列化を上げる
    ・スケールアップ
    ・スケールアウト(クラスタリング)
    
    やっとクラスタリングに
    
    ・マスタ/スレーブ方式
     マスタは命令を出す
     スレーブを命令通りに仕事する
     マスタはスレーブの結果をすすめる。
    ・スレーブの設定はsshがお勧め
     →公開鍵の設定が VM上にしておけばいい
    ・スレーブにラベルを付けれる
     WindowsのみやLinuxのみ、実行環境のバージョンやDBごとなどをグループ化
    
    ・デモ
     Windows
     JNLP経由でスレーブ起動
     
    コンソール出力
    クラスタリング構成の有用性
    ・マシンは人間に比べて安い
     こき使いましょう
     使いこなすのもスキル
    ・Job単位で並列で実行可能
    
    Jenkingは導入が簡単
    
    ・情報
    ・公式Wikiに日本語情報がありまs.
     クラスタリング
    
    ・Twitterでつぶやく
    ・ブログに〜〜
    
    プラグイン
    
    
    ・自転車 de ダイエット
    自転車のウェブサービス
    Input
     炭水化物、タンパク質、脂肪、水分
    Output
     燃焼
    
    7,000 脂肪の重さ
    7000kcal/kg
    
    7000kcal燃焼させれば痩せられる
    
    消費カロリー > 摂取カロリー
    
    運動強度って?
    
    強度が高い=キツイ運動
    脂肪
     出力(わっと)
     心拍数
    
    RPE
     主観的運動強度
    
    NO SILVER BULLET
    
    ダイエットの心構え
    ・計測は力なり
     食事、間食、飲料の摂取カロリー
     基礎代謝、運動量の把握
    
    
    グリコーゲンと水がいる
    
    1馬力 742ワット
    競輪2500ワット
    馬・・4馬力
    
    データ解析ソフト
    C++/Qt
    
    ・自転車通勤 #jite2
    
    会社の役員が多い。
    
    ■akisutesama
    
    In-App Purchase
    In-App Building
    
    Say "dodai.com"
    
    ・サーバーサイドでの保存
     レシートを保存 購入履歴
     認証デバイス
     ユーザーの管理
    
    ・レシート
     Base64のデータがユーザから来る
     Appleのサーバに投げてJSONが帰ってくる 
    
    ・重要(レシート)
    original purchase date
    transaction id アップルとの
    product id アイテムをAppleに管理する必要がある 手作業で入れる 販売先や自分でも保存しないとダメ
    
    purchase id
    
    →足りないもの
    誰が買ったか?
    誰が入ったかが取れない
    
    Androidもとれない
    notification id  いらない
    product id
    
    ・iPhone
    AppleID →とれない
    UDID デバイスのID →取れる マックアドレスもとれる
    
    
    ・Android
    〜〜〜〜ANDROID_ID 信用できない 使えない
    
    ・Inplement ID/Password
    ・E-mail
    ・Key generation
    ・Receipt verification
    
    ・API Example
    
    
    モデル
    
    ・User
    -user_id
    -devices
    
    ・Mobile Device
    -platform
    -udid
    
    ・IAPLog
    -platform
    -udid