タグ

tipsに関するcanipyのブックマーク (402)

  • Android:Adapter.getViewでAsyncTaskは危険 | 自転車で通勤しましょ♪ブログ

    メモ書き程度に残しておこうと思います。 WebAPIと連携したアプリでListViewなどを使っていると、画像を遅延ロードすることがたくさんあると思います。そこで、ListView.getViewの動作を速くするためにViewHolderを使ったりなどのテクニックが紹介されていますが、そこでAsyncTaskを使って画像をDLする仕組みを使うのは危険です。具体的にいうと、キューを使わずに、ですが。 getViewは頻繁に呼ばれるメソッドです。リストをちょっとスクロールしても呼ばれますし、ソフトウェアキーボードの出し入れなど、画面描画に関するものが使われると怒濤の如くコールされます。今回は8行表示するところで、24回もgetViewが呼ばれ、8回しか呼ばれないと思っていたAsyncTaskが24回も呼ばれていました。スクロールしたらさらに呼ばれ続けて、スレッド数が多過ぎるというエラーでアプリ

  • 必要になってから ListView にデータを追加する。

    昨日に続き ListView ネタをもうひとつ紹介します。 サーバからデータを取ってくる時などで一度にデータを持ってくるのではなく必要に応じてデータを追加したい時があります。なるべくならユーザ操作無しで。そんな時に使えるテクニックです。 サンプルアプリは47都道府県を10件ずつ表示させるアプリです。リストの最後に到達する毎に10件のデータを追加します。データはサーバではなく自前で持っているので瞬時に入手できるのですが、サーバにアクセスしている雰囲気を出すため少々タメを入れています。 ListView が最後の行まで到達したかどうかは ListView に setOnScrollListener を指定することで取得できます。データを追加したあとにデータの更新が完了したことを adapter の notifyDataSetChanged を使って ListView に知らせてあげます。 @O

  • Python から Gmail を使う (1) - 傀儡師の館.Python:楽天ブログ

    2011.05.22 Python から Gmail を使う (1) テーマ:プログラミング言語 Python を使う(336) カテゴリ:Python Python から Gmail を使う方法についてまとめておく。 Gmail を使ってメールを送信する 標準ライブラリの smtplib を使って送信することができる。 # -*- coding: utf-8 -*- import smtplib from_address = 'your_email_address@gmail.com' to_address = 'to_mail_address@gmail.com' message = 'Message to send.' # Gmail のユーザー名とパスワード username = 'your_username' password = 'your_password' # メールを送信

  • eclipseのインストール(Eclipse 3.6.0 Helios編) - 愚鈍人

    プログラミングメモJavaJava-tipseclipseのインストール(Eclipse 3.7 Indigo編)JavaのリフレクションJavaSQLiteデータベース参照型変数と値が未定義の変数とnullと空文字==とequalsメソッドの違い。イニシャライザ(initializer) ― staticイニシャライザとインスタンスイニシャライザネストした型-内部クラス(インナークラス)(1)ネストした型-内部クラス(インナークラス)(2)ネストした型-内部クラス(インナークラス)(3)-内部クラス,外部クラスへのアクセス匿名クラス(無名クラス)とイベントリスナー定数と初期化配列の初期化SAStrutseclipseにSAStrutsのプラグインをインストールチュートリアルのセットアップSAStrutsの新しいプロジェクトを作成する最初に起動されるアクションIndexActionクラス

  • ip_conntrack_maxの限界に挑む - ひげろぐ

    つい先日管理しているメモリ2GBのウェブサーバーのip_contrack_maxを50万にしてみた。 # echo '500000' > /proc/sys/net/ipv4/netfilter/ip_conntrack_max 不意な事情でアクセスがバーストしてしまい、他に手もなかったのでやむなくの緊急処置として。 結果事態は無事収束。あやういところじゃった。 経過 事態が起きた当初のip_conntrack_maxはデフォルトの65535だったのだが、怒濤のごときアクセスにたちまち上限まで攻め立てられたので10万にして、それでも焼け石に水だったのでダメ元で50万にしてみたという。 ダメ元というのはip_conntrack_maxの上限値がメモリ64MBごとに4096って情報があったので無理かと思っていたため。 でもなんだか普通にいけた。 この情報はもう古いってことかな。 ちなみに15万

  • Linuxのサーバをリモートから強制的にOSリブートする - 元RX-7乗りの適当な日々

    先日、諸々の都合で遠隔にあるテスト環境のサーバ(Linux)のカーネルパラメータを弄っていたのですが、ちょっと設定(メモリまわり)がイキすぎてしまいw、コマンド実行というかforkできなくなってしまった(Cannot allocate memory...)。 んで、shutdownコマンドも実行できなくなったので、直そうと思ったのですが、色々弄った&時間がなかったこともあり、一旦OSを再起動しちゃいたいな、と(汗 が、遠隔にあるサーバなので、物理的な電源スイッチON/OFFができない(厳密には出来る環境ではあったのですが、このサーバはそこに入ってなかったw)。ので、SysRqキーを送ることにした。 やり方 少し無理矢理感はありますが、 # echo b > /proc/sysrq-triggerを実行すると、強制的にリブートがかかります。 ただし、ファイルシステムのsyncとかumount

    Linuxのサーバをリモートから強制的にOSリブートする - 元RX-7乗りの適当な日々
  • すぐに実施できる、あなたのウェブページのスピードを改善する10のチップス

    ウェブページのスピードを改善することは最適なユーザエクスペリエンスを提供するだけでなく、Googleの検索結果にも影響を与える大切な要因です。 すぐに実施できる、あなたのウェブページのスピードを改善する10のチップスを紹介します。 10 Tips for Decreasing Web Page Load Times [ad#ad-2] 下記は各ポイントを意訳したものです。 1. 現在のスピードをチェック 2. 画像の最適化 3. 画像は実寸で配置 4. コンテンツを圧縮して、最適化 5. スタイルシートは上に配置 6. スクリプトは下に配置 7. スクリプトとスタイルシートは外部ファイルで 8. HTTPリクエストは最小限に 9. キャッシュの利用 10. 301リダイレクトは避ける 参考資料とツール 1. 現在のスピードをチェック まず、現在のあなたのウェブページのスピードの分析からはじ

    canipy
    canipy 2011/04/22
  • ListViewを拡張する方法 | public static void main

    課題 AndroidのListViewを拡張して、各行の表示を自前のレイアウトで実装する。 Androidに元々用意されているリスト表示形式では、1行に1項目か2項目しか表示できない。 これを、リストの1行に当たる部分をXMLファイルに定義することで、オリジナルの形式でリスト表示できるようになる。 完成図 こんな感じのリストを作る。 必要なファイル4つ 1.リスト1行分のレイアウトファイル inflater.xml リスト1行分のレイアウトを定義したXMLファイル。 このレイアウトでリスト1行が表示される。 2.リスト1行分のデータ格納用クラス DtoInflater.java inflater.xmlの各idに対応するデータを格納する。 3.アダプタクラス InflaterListAdapter.java リスト表示用のアダプタクラス。 LayoutInflater

  • Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意する こと

    Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意する こと PreferenceActivityについては、以前Android アプリケーションの設定画面の作り方という記事で簡単に記載しました。ソフトウェアの設定画面等で使用するために用意されている、PreferenceActivityは、XMLファイルを作成するだけで自動的に値の保存、初期値設定等行うので非常に便利です。 設定画面上で変更が加わった時に呼ばせることができる、onSharedPreferenceChangedというコールバック関数がありますが、これで少しつまずいたので解説です。 onSharedPreferenceChangedとはSharedPreferenceの値が変更になった時に呼ばれるコールバック関数です。 ユーザにより設定が変更された時に、Pre

  • XMLレイアウトでAndroidアプリに“設定画面”を追加

    両社の対立が今後どのようになっていくかは、Androidアプリ開発に大きな影響を及ぼします。連載の読者なら、今後もぜひ追いかけるべき話題でしょう。どのような結果になるにせよ、いままで作ってきたアプリや、今後作成予定のアプリが無駄にならないようにしてもらいたいものです。 大きな心配ごとができてしまいましたが、連載では変わらず、Java言語を使ったAndroidアプリ開発に役立つ情報を提供していきたいと思います。今回は、“設定画面”についてです。 Androidアプリに設定画面を追加するのは簡単だ Androidの標準ライブラリには設定専用のPreferenceActivityクラスが用意されています。Androidケータイの設定画面もPreferenceActivityで作成されています。 ここまで複雑な設定を持つアプリはなかなか少ないと思いますが、独自に設定画面を頑張って一から実装する

    XMLレイアウトでAndroidアプリに“設定画面”を追加
  • internのひみつ - atsuoishimoto's diary

    Pythonにはintern()という組み込み関数がある。結構特別扱いで重要な組み込み関数なのだが、使い道が今ひとつ分かりにくいのか知らない人も多いようだ。 intern <捕虜・危険人物などを>(一定の区域内に)拘禁する, 抑留する. [新英和(第7版)・和英(第5版)中辞典 株式会社研究社] なんだか物騒な関数だが、同じような機能を持つLisp族の関数から名前を拝借したのだろう。intern()をPythonスクリプトで書くと、だいたいこんな感じの処理になる。 _intern_map = {} def intern(s): if s in _intern_map: return _intern_map[s] else: _intern_map[s] = s s.interned = True return s 文字列sと同じ文字列が専用の辞書_intern_mapに登録済みなら登録済み

    internのひみつ - atsuoishimoto's diary
  • MySQL 5.5をわずか30秒足らずでコンパイルするためのテクニック

    べっ・・・別にソースコードなんて自分でコンパイルしないんだからねッ!!などと言わずにまず聞いていただきたい。30秒でMySQLのコンパイルが出来るというこの事実を。最近、細々とビルド時間の短縮に取り組んでいたのだが、正直ここまで爆速になるとは思わなかった。今日はビルド時間短縮のためのテクニックを紹介するので、是非皆さんも参考にして、快適ビルド生活を送って頂きたい!! 自己ベストは26.262秒マシンの状態や負荷の状況によって多少ビルドにかかる時間は前後してしまうのだが、これまでの自己ベストはなんと26.262秒。平均すると30秒ぐらい。以前は1分を切ることがなかったのだが、今ではなんとその半分でビルドが出来てしまう。これは純粋にmakeをするのにかかった時間であり、cmake(MySQL 5.5以降)やconfigure(MySQL 5.1以前)にかかる時間は除いてある。だがそれでも速い。

    MySQL 5.5をわずか30秒足らずでコンパイルするためのテクニック
  • adakoda.com

  • 液晶パネルのWakeLockを取得し、Sleep状態からWake状態へ遷移する | TechBooster

    アプリケーションを作成していく上で、ユーザーへの通知は欠かせないものです。 例えば、常駐型のアプリケーションを作成している折に、Sleep中にユーザー通知を行ないたい場合があると思います。 ロック画面(文では KeyguardLockと記載) 従来のやり方で、Service等からIntentでActionを起動したとしても、Sleepは解除されません。 日は、ApplicationからのSleepの解除とロック画面の解除を制御する方法を以下二点の内容に沿って紹介していきます。 Sleepからの復帰 KeyguardLockの解除 これらについて、続きで説明していきます。 Sleepからの復帰 Sleepからの復帰にはPowerManager#WakeLock#acquire()を利用します。 acquire() Methodには引数の あり/なし の二種類があります。 両者の違いは以下

  • 3.ファイルシステム(ext3、ReiserFS、XFS)(第3章ディスク管理とファイルシステム:基本管理コースI)

    ファイルシステムは、OSがファイルを管理するための枠組み。 MIRACLE LINUXでは、以下のファイルシステムが利用可能 ext3 RaiserFS XFS ファイルシステムは、以下の手順で作成 ファイルを作成したいパーティションに対して、ファイルシステム作成 ファイルシステムを作成したパーティションを使用できるようにマウント システム起動時に自動的にファイルシステムをマウントする時は「/etc/fstab」に記述 ファイルシステム /sbin/fdiskでパーティションを作成しただけでは、そのパーティションを使用することはできません。OSがそのパーティションを利用するためには、そのパーティション上にファイルシステムを作成し、マウントする必要があります。ファイルシステムとは、OSがファイルを管理するための枠組みであり、MIRACLE LINUXでは、ext3、XFS、ReiserFSな

  • 戻るキー(Backキー)を無効にする | TechBooster

    今回は特定のキーを無効にする方法を説明します。 実際のアプリケーション開発においては、「戻る(Back)キーを無効にしたい」という場面が出てくると思います。 Androidの標準の動きとしては戻るキーを押すと現在のActivityが終了します。 しかし、戻るキーを押された時にすぐにActivityを終了させずにデータ保存の有無に関する確認ダイアログを出したい場面や、ゲームであればゲーム中に誤ってキーを押してゲームが中断することを防ぐために完全にハードウェアキーを無効にした方がよいこともあります。 以前、キーイベントを取得するで紹介したサンプルコードを少し修正するだけで実現可能です。 それでは続きでサンプルコードを説明します。 dispatchKeyEvent Activity#dispatchKeyEvent()でイベントのハンドリングを行います。 まずはキーイベントを取得するのサンプルコ

  • Activity内で画面遷移をする方法 - Hacking My Way 〜 itogのhack日記

    Androidで画面遷移をする場合、ActivityをIntentで呼び出す、という方法が一般的。 ただ、Activityを起動すると、それなりに時間がかかってしまったり、トランジションやBackボタンの動作などがホームの設定で規定差れてしまったりなど、不都合もある。 ここではレイアウトを切り替えることで、画面遷移をしているように見せる方法考えてみる。 レイアウトの変更 ただ単純にレイアウトを変更するだけであれば、setContentView()でできる。 ボタンクリックでmainからsubに切り替えるのは以下のような感じ。 onCreate() { setContentView(R.layout.main); main_button = (Button) findViewById(R.id.button1); main_button.setOnClickListener(new OnCl

    Activity内で画面遷移をする方法 - Hacking My Way 〜 itogのhack日記
  • lsyncd + rsyncdを使用したサーバ間リアルタイム同期 | 自宅がiDC?

    やたら長いタイトルとなりましたが、今回はこれについての手順を。 正直8月号のSoftware Desginに掲載されていた内容を実際にやってみたって感じですがw lsyncで何が出来るかって簡単に言いますと、rsyncをずっとリアルタイムに近づけた動作をします。 通常rsyncでファイルやディレクトリを同期するときは、手動でコマンドを叩くか cronにセットするしかないですよね。 これをリアルタイムにかつ自動的に処理させるのがlsyncなんですね。 また、同期をされる側はrsyncが設定されていればいいだけなんです。 (同期元はlsyncdをインストール) lsyncを使えばあるサーバから複数台のサーバに一括同期をとることができます。リアルタイムで。 手順はこんな感じです。 実際にはサーバA,Bの2台を用意してA→Bに同期をとる構成です。 同期をとるディレクトリは/var/t

  • より良いPHPerになるための20Tips

    去年の話ですが、海外でこんな記事が上がっていました。 20 Tips you need to learn to become a better PHP Programmer 記事の内容は、かなりレベルが低いです。 しかし、初心者のうちに知っておけば、より早く成長出来るでしょう。 初心者PHPerのために、この記事の翻訳を載せます。 20 Tips you need to learn to become a better PHP Programmer PHPは、同じオブジェクトの扱い方でも複数の書き方を持っている、とても気まぐれなプログラミング言語だ。 詳しくは、私の書いた”The Art of Programming“を読むと良い。 これから書くTipsは、過去のプロジェクトから私が学んだコードの可読性、メンテナンス性を上げ、あなたを素晴らしい、より進んだPHPプログラマーにするもの

  • AlarmManager

    AlarmManager ・システムの AlarmService を使うためのクラス ・アプリケーションを将来のあるポイントで起動するようスケジュールできる ・Alarm が開始すると、システムによって Intent が broadcast される ・この Intent に起動したいアプリケーションを登録しておく ・これにより、現状で起動していないアプリケーションが自動で起動する ・登録された Alarm はデバイスがスリープ状態の間保持される(オプションでデバイスがオフの場合に wake up させることができる)が、再起動したり電源を切ると登録はクリアされる ・Alarm Manager は alarm receiver の onReceive() メソッドが実行されているのと同じだけ CPU を hold する ・これはブロードキャストの処理が終了するまで電話がスリープ状態にならない