プログラミング言語

Android Framework Code Reading #2 参加記

@operandoOS氏主催のソースを読む会に参加してきた。(@メルカリ) 素敵な雰囲気のオフィスだった。 よい機会だったのでLauncher3を少し読んでみた。 ↓ イベントのページ https://mandroidfcr.doorkeeper.jp/events/33925 ↓ しおり Android Framework Code Readingのしおり 背景 以前Qiitaで RecyclerViewをFragmentPagerAdapter風にする という記事を書いたのだが、 できるだけ簡単に 水平方向で1ページずつ表示する スワイプで左右に移動する ページの境界線にスナップする ということ...

SonarQubeでソースコードの品質チェック

ゴール こんな感じでSonarQubeさんからコードレビューされます。 各種言語のソースコードでダメな内容をLint的な感じで教えてくれます。 リンククリックで該当箇所も表示されます。 コードの品質担保 プロジェクトが大きくなると技術的負債がソースコードに蓄積されていきます。 技術的負債がたまってくると新規機能追加や既存機能改修時に色々悪影響が出てきてプロジェクトが遅延します。 技術的負債がたまるにつれ、リファクタリングコストが高くなり、 最悪作り直しの方が早いとい...

Sparkプログラミングのお勉強~WindowsだけでサクッとIDE環境を作ってみた

遅まきながら、Sparkのプログラミングを勉強しようかなー、と思い まずは環境整備!と思ったんですが、根が怠け者だし、Sparkは現物のHadoopなしでも動く(はずな)ので、 * 手持ちのWindows PCだけでなんとかしたい!( LinuxのVM作るの面倒) * 手慣れたEclipse(ScalaIDE)で動くようにしたい! * どうせなら最新のSpark 1.6で新しい機能も勉強しよう! * (一応プログラミング言語はScalaを前提に) と思いました。でネット上の情報を色々調べながら取り組んだのですが、情報が古かったり...

RubyからJavaScriptを呼び出す〜ExecJS〜

Rubyから他言語を呼び出す記事が話題となっていますが、今回は「速さ」目的ではなくJavaScriptを呼び出す、ExecJS gemについて取り上げてみます。 RubyからJavaScriptを呼ぶ場面 Webのフロントエンド側で使える唯一の言語ということで、JavaScriptのポジションに代わるような言語は存在しないのですが、さらにはNode.jsのようなローカル側で実行する環境が整ったこともあって、Web向けのビルドプロセスも多くがJavaScriptで構成されるようになっています。 Railsを使っていても、Coffe...

JenkinsにMacのスレーブを追加してみる

概要 さくらのVPSで動かしているJenkinsに、自宅のMacをスレーブとして追加する 環境 master CentOS 6.6 (Final) Jenkins 1.580.1 slave OS X Yosemite 10.10.1 前提 Jenkinsでアクセス制御を設定してみる Jenkinsでスレーブとの接続ポートを固定化してみる ノードを追加する マスターで「Jenkinsの管理 > ノードの管理 > 新規ノード作成」を選択する。 ノード名を入力し、ダムスレーブを選択する。 上記のような感じで設定して保存するとノードが追加される。 エージェントを起...

ViewのID指定で丸穴あけるオーバーレイを作れるカスタムView

ちょっと面倒なオーバーレイのヘルプ用カスタムView こういうなにかのオブジェクトの位置だけくり抜くヘルプ用のオーバーレイ的なの、 正直めんどうくさい。 解像度ごとに穴の場所かわったり。 なら穴あける部品の場所に自分で計算して穴を開けてくれるカスタムViewを作っておけばいいし、 沢山実装する場所あってもカスタムViewとヘルプ本体のテキストや画像をセットにしたlayout.xmlだけ指定して差し替えるFragmentを作っておけばいいじゃないか。 という事で夏頃に穴を開けられるオ...

ライブラリのPR が取り込んでもらえなくて悲しい、が、とりあえず自分の修正を適用したい時

(バグ|機能要望)あった!PR 送った! が、取り込んでもらえなくて悲しい そんなことってありますよね! (悲) そんなこともあろうかと、パッケージマネージャーには、Git Repository を指定する技法が整っているので、ひとまず指定して対応するという手もあります。ひとまず、自分の知っている範囲のメモ。 Ruby (Bundler) パターン1: git リポジトリ指定 gem 'smtpapi', '~> 0.1.0', git: 'https://github.com/kawahara/smtpapi-ruby.git', branch: 'add-asm_groups_to_display' パ...

Webhook as a ServiceでIoTのserverlessなバックエンド考える - Part 1: リソース

 今年たくさんのIoT系のハッカソンに参加して気づいたことは、エンジニアでない方やフロントエンドの方にはターミナルのいわゆる「黒い画面」に抵抗があるということです。自分は1日の半分は「黒い画面」で過ごしているので麻痺しています。IFTTTやZapier、OctobluやmyThingsを使っているとサーバーを意識せずに簡単にWebサービスやクラウドを連携できるglueが重要になってきていると思うようになりました。  少なくともサーバーのプロビジョニングやアプリのデプロイをせずに、自分...

プログラミング言語Tippy(Brainf*ckのGroovy実装)

概要 この記事はG* Advent Calendar13日目の記事です。 今回はGroovyでBrainf*ck派生言語の実装を行ったのでその紹介をしたいと思います。 Brainf*ck 皆さん、Brainf*ckは知ってますよね?(汚い言葉なので*で伏字になっています) 言わずと知れた何回プログラミング言語のひとつです。実装がとても単純なのでさまざまな言語で実装されています。( 知らない人はWikipedia) また命令が8つしかないのでそれぞれの文字を置き換えたネタ言語がアニメが話題になるたびに出てきます。 ジョジ...

HiveからSparkに変えたら14時間分の集計バッチが3時間まで短縮できた話

おきまりのやつ CYBIRDエンジニア Advent Calendar 2015の13日目を担当します新卒入社3年目の@fuppiです。 分析基盤の開発・運用と予測モデルの構築をしています。 昨日は大先輩である@SayakaItoさんの「Unityで仮想現実にさわってみた」でした! VRは、すごく興味があるのですが3D酔いするのがつらい… ヘディングをするだけでも、かなり没入感を得られたようなので BFB(弊社のフットボールゲーム)もVR対応したらおもしろいんじゃないでしょうか!! はじめに 弊社の分析基盤はAmazon...

Pivotal, Cloudn, Bluemixを体験し、Cloud Foundryの基本的な操作を学ぶ

このエントリは、Open PaaS Advent Calendar 2015の24日目のエントリーです。 Open PaaSということなので、シンプルにCloud Foundryを採用しているPaaSを簡単に使ってみた話です。比較目的ではありませんのであしからず。 使ってみて感じた事 サービス、Buildpack Bluemixは、登録されているサービスやBuildpackが一番多いですが、やはり米国にある為か若干遅く感じます。Pivotal Web Servicesは、Bluemixの次に、サービス数やBuildpackの数が多く、Cloudn PaaSは、登録されているサー...

AndroidのListViewチュートリアル

アプリを作る上で基本となってくるListViewですが、基本の割にはやることが多いので、主な流れをまとめます。 今回は人のプロフィール情報を表示するサンプルを作ります。 1.Layoutを作る res/layout/list_profile.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > &...

ViewPagerでページを保持するメモ

ぎゃーさっき生成したページが2ページ移動しただけで破棄されとるー!な人向けのメモです。 ViewPagerが保持するページ数を変更する ViewPager | Android Developers setOffscreenPageLimit(int limit)を使います。 mViewPager.setOffscreenPageLimit(2); ViewPagerはsetOffscreenPageLimit()で設定した数だけ、左右それぞれのページを保持します。 デフォルトではこれが1に設定されているので、例えば全3ページのコンテンツの場合、表示中のページが真ん中の場合は左右どちらのページ...

ひとりKii Cloud Advent Calendar 2014-12-20

この記事は、ひとりKii Cloud Advent Calendarの20日目の記事です。 20日目「オブジェクトのIDをうまく使う」 ここまで非公式ライブラリの簡単な使い方ばかり続いたので、残り5日はHack的なものを紹介。多分公式SDKでも同様のHackが使えるはず。 例えばユーザー毎の設定情報を1つのオブジェクトとして保存したいというケースを考える。設定情報を保存しているオブジェクトがたくさんできても困るので、 オブジェクトが無ければ作成 オブジェクトがあればそいつを更新 といったこ...

CentOS7にTypesafeActivatorを使ってScalaとPlay framework2を導入してみた

最近?はやりのReactive Programmingの環境として、PlayFramework2をインストールしてみました。vagrantのcentos7上に構築しています。 なんのことはないタダのVagrantfile Vagrant.configure(2) do |config| config.vm.box = "centos7" config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder "./data", "/vagrant", create: true end typesafeActivatorをダウンロードする 現時点でのTypesafeActivatorは1.3.7が最新版でした。 console $ wget ht...

Pythonで高速なRPCを実装する

Pythonで高速なRPCを実装するためのライブラリであるMprpcを紹介します。 内部では、MessagePack RPCプロトコルを用いていて、Java、C++、PHP、Rubyなど既存の他言語のクライアントとも通信が可能になっています。 下記のように簡単にRPCサーバを記述することが出来ます。 sum_server.py from gevent.server import StreamServer from mprpc import RPCServer class SumServer(RPCServer): def sum(self, x, y): return x + y server = StreamServer(('127.0.0.1', 6000),...

Xamarin StudioとGenymotionでAndroid開発 - Part1: インストール

Xamarin.Androidを開発するための環境をWindows7に用意します。続きはOSXでも開発をしたいのでIDEはXamarin Studioを単体で使うことにします。AndroidエミュレータはGenymotionを使います。Xamarinアカウントは無料のSTARTERプランではサブスクリプションがないので、Xamarin Android Playerは使えません。INDIE以上の有料サブスクリプションが必要になります。 Xamarin Android Player 無料のSTARTERプランではXamarin Android Playerが使えません。OpenGLに対応しているなど高機能な...

Xamarin StudioとGenymotionでAndroid開発 - Part3: OSX環境でGitHubからビルドする

前回まではWindowsにインストールしたXamarin Studioで作業をしていました。GitHubからソリューションをチェックアウトしてOSX上に開発環境をつくります。Windowsと同様にシュミレーターはGenymotnionを使います。 Genymotion Windowsと同様にVirtualBoxとGenymotionをインストールして、virtual deviceを作成します。 VirtualBox: 4.3.20 Genymotion: 2.3.1 virtual device: Google Nexus 4 - 4.4.4 - (API19) - 768x1280 Google Nexus 4 - 4.4.4 - (API19) - 768x1280のvirtual devi...

OCLint&XCodeを用いたObjective-Cの静的解析

OCLintとは Objective-Cの静的解析ツール。 JavaのCheckStyleみたく、コードの問題点を教えてくれる。 本稿ではXCodeから使用できるようにする。 OClint公式サイト インストール&設定 xctoolのインストール ※ Homebrewインストール済みとします。 $ brew install xctool OCLintのインストール ダウンロード http://oclint.org/downloads.html 配置 oclint-0.8.1フォルダを/usr/local などに移動する(例./usr/local/oclint-0.8.1/)。 XCodeの設定 対象のProjectを選択する。 左下の「...

カスタムローディングを使ってアプリに個性を出す

はじめに 2日目のエントリです。 今日は gif ライクなローディングアニメーションを作成する方法を紹介します。 素材を用意する ローディングに使用する素材を用意します。今回は Androidify を使って、↓のようなものを用意してみました。 https://www.androidify.com/ja/#/ animation-list を用意する 用意した素材を表示する順序、表示間隔を指定します。 custom_progress.xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item and...