概要 Androidはアプリ内で定義しているメソッド数(依存ライブラリも含む)が65536を超えると、ビルドできなくなる問題がある。 例えばGradleでビルドしていた場合はこういった表示が出るはず。 主にこういった状況は大規模なライブラリ(GuavaやApache Commons等)利用した時に起こるので、業務アプリのような比較的大規模な開発では悩まされた人も多いのではないだろうか。 今回はその問題についての説明と、対処法について紹介する。 この問題について そもそもなぜこの問題が起きるのか。 この問題の根本的な原因についてはgfxさんの記事が参考になる DalvikバイトコードのMethod数65k制限について http://d.hatena.ne.jp/gfx/20140704/1404431315 つまり、アプリケーションで定義したメソッド数が65kを超えるかどうかではなく、ひとつ
本連載が書籍化されました。 『良いコードを書く技術 ─ 読みやすく保守しやすいプログラミング作法』 縣俊貴 著/A5判・240ページ 価格2394円(本体2280円) ISBN 978-4-7741-4596-9 はじめに この連載は、「良いコードの書き方」を知ることを目的としています。みなさんの周りにも「良いコード」をものすごいスピードで書き上げて、開発の原動力となっているプログラマがいませんか? 本連載ではそのような「できるプログラマ」たちが「日常的に意識していること」に注目して、彼らの中では常識だけど一般的には気づかれていないような内容を、プログラミング初心者にもわかりやすい言葉で解説していきます。プログラミング言語はJavaを中心に説明しますが、RubyやC#、JavaScriptなどでの例も織り交ぜていく予定です。 第1回の今回はウォーミングアップとして、良いコードを書くために
前置き - CSS 設計が難しい件について 誤解を恐れずに言うならば、CSS は変数も関数も条件分岐もない、ある種ゆるふわな言語(仕様)といえます。そのためプログラミング言語のように記述ミス一つで全ての挙動が止まるなんてことはありませんし、いくら冗長に記述しようがブラウザ上での挙動に差異が生まれることも殆どありません。ちょっと嗜めばそれっぽいものが作れてしまうので、マークアップエンジニアのいない小規模体制の組織であれば、サーバーサイドエンジニアやデザイナーが片手間で習得して実装してしまうというのも珍しいことではないでしょう。それでも良かったのかもしれません。これまでは…。 片手間で学習した知識というのはなかなか体系化されないものです。CSS も御多分に漏れずプログラミングのテクノロジーは日進月歩なため、その時は最新だった技術が僅か一年も経たないうちに廃れてしまい、バッドノウハウ化してしまう
完了するまでに結構時間がかかるプログラムを実行している時,そのプログラムの進捗度を確認したくなることがままあると思います.ほんとに動いてんのかお前,みたいな. そうした時に考えうる最も簡単な方法は,こんな感じで進捗度を標準出力に流してしまうという方法でしょう. (1..100).each do |i| # 例えばここで何らかの重い処理をする (下のsleepはその「何らかの処理」の例) sleep 0.1 # ここで進捗を表示 (プログレスバーみたいなもっとリッチな感じでも可) puts "#{i}%" end 簡単なものだとこれで良いでしょうが,途中で端末のセッションが切れると「アッアッ」という感じになったり,そもそもプログラムの実行に際して端末が割り当てられいるとも限らないし,というか時間のかかるプログラムがその処理中ずっと端末を占領しているのはつらいので別の方法が欲しかったりします.
日常的な学習の方法 日常的な学習はプログラマにとって不可欠な活動です。ソフトウェアの世界には次々と新しい流行が登場しますし、基礎的な事柄だけでもマスターしておきたいことは山ほどあります。今回は日常的な学習の方法について、私のパターンに照らし合わせて考察してみたいと思います。 ブログ ブログは学習というよりは情報収集に適したメディアです。ブログの記事は、だいたい小粒で、1つの記事で内容が完結しています。ほかの人がどんなことに興味を持っているかわかるのも、流行を知るといった点でプラスです。とはいうものの、ブログで得られる情報の大半は、断片的な雑多なノウハウであるため、長期的に役立つような知識のかたまりはほとんど残りません。 雑誌 プログラムを書いている最中に「今すぐ知りたい」といった類いのピンポイントの情報(たとえば、Perlで文字コードを変換するにはどうすればいいんだっけ、とか)は、Webを
はじめに: 技術ネタは最近Qiitaに書いています このブログはもともと「技術系ブログ」としてスタートしました。 イメージとしては「技術的な問題に遭遇してググったら引っかかるようなサイト」です。 普段そういうページによく助けられているので、自分もgive&takeの精神で情報発信していこう、と思ったのが動機です。 しかし、去年の夏にQiitaに出会って以来、シンプルな技術的なネタはQiitaに書くようにしています。 理由はQiitaというサービスの方向性がまさに「技術的な問題に遭遇してググったら引っかかるようなサイト」だったことに加え、Qiitaの中の人に出会って「Qiitaにかける情熱」を直接聞いて、僕も応援したいな~と思ったからです。 そんなわけで、このブログが更新されていなくても、ときどきQiitaにポロッとTips的なネタを書いたりするときがあります。 気になる方はQiitaで僕の
Vim Advent Calendar 2013の168日目の記事です。 Vimプラグインの組み込みなど、日々Vimによる開発速度の向上を研究されている方も 多いかと思います。そんな開発効率を一撃で高められるテクニックがあるので紹介。 それはズバリ、OSのキーリピート速度を高めるです。 非常にシンプルですが、破壊力がすごいです。 普段のwebhjklがこの通り。パラグラフ単位移動コマンド{ }でやるとすごい速度。 単語単位でも超高速で移動できます。 もちろん通常のvimに限らず、tmuxのvisual mode(vi互換)であってもBashのカーソル移動であってもリモート接続先のVimであっても全てが高速になります。なぜならボタンを押し続ける動作はほぼキーリピートによるコマンド送出だからです。 Bashの場合は単語移動では以前はEsc + fを利用しておりましたが、すっかり使わなくなりまし
CSSというか静的ファイル全般の配信が止まる。 (※我々の目の前で突如フラットUI化したJenkins氏の様子) Jenkins で、 css 等が適用されなくてスタイル崩れを起こす事があるんだけどあれなんなんだろう…— そらは (@sora_h) 2013, 4月 4 JenkinsさんちょいちょいCSSが反映されなくなるんだけどどうしてなん?— 口玉(西の緊縛[ゴールデンボンバー]) (@Kuchitama) 2013, 7月 12 jenkinsのcssが崩れる時間と、私の顔のcssが崩れる時間の相関関係を考えている— しまざきしょうこ♀しょっぴー (@shokos) 2013, 6月 28 (みんな困っている) 今日また起きてなんとなく https://issues.jenkins-ci.org/browse/JENKINS-17526 を読んでみたらGreg Albrechtが書
9割ぐらいはハッシュ何がハッシュなのかjavascriptで存在するほとんどのオブジェクトの実体はハッシュだよ。 var arr = [0,1,2,3]; とかをみると配列(人によってはリスト)に見えると思う。でも実際は違うんだ。 これは var has = {0:0,1:1,2:2,3:3}; と基本的には等価なんだ。ただちょっと束縛されているメソッド(インターフェイス)が違うだけ。 ためしに arr[4] = 4; arr['x'] = 'string'; arr[-1] = -1; としてみよう。 Firebugで確認してみると[0, 1, 2, undefined, 4]というような値がかえってくるよ。 でもarr[-1]やarr['x']の値は保存されてないのかな?そんなことはないちゃんとアクセスできるんだ。 それどころかarr.xで'string'がかえってくるんだ。 別の例を
プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基本的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基本的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基本的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使
JavaScript における比較演算子 == と === の使い分けって, C や Java といった他の言語にはない仕組みなので意外と戸惑う人もいるみたいですね. 今回はその違いについてまとめました. Runstant Lite で作ったサンプルもあります. 良かったら fork して遊んでくださいな♪ 等価演算子と厳密等価演算子 JavaScript には, 型変換して比較するあいまいな比較と厳密に比較する方法の2通りがあります. あいまいな比較 == は等価演算子, 厳密な比較 === は厳密等価演算子と呼びます. JavaScript の比較における特徴はこちら 2つの文字列は、文字の順序が同一で、長さが等しく、かつ対応する位置の文字が等しいとき、厳密に等しくなります。 2つの数値は、数字的に等しいとき(数字の値が等しいとき)、厳密に等しくなります。NaNは、どんなものとも(Na
ssh で鍵やユーザ名を複数のホストで使い分けないといけない場合、それら設定を覚えておくのは面倒です。 それらホスト毎の設定は ~/.ssh/config で簡単に管理することができます。 複数の鍵を管理する場合 identity, id_rsa などのファイル名で保存しますが、これでは複数の鍵を置くことができないので、 test.org の場合、「id_rsa.test.org」 hoge.in の場合、「id_rsa.hoge.in」 など、ホスト名や用途名の prefix, suffix を付けて管理しています。 どの鍵をどのような用途で利用しているのかが分かればファイル名は何でも構いません。 ~/.ssh/configを記述する Host test.org HostName test.org IdentityFile ~/.ssh/id_rsa.test.org User test
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く