タグ

ブックマーク / argius.hatenablog.jp (24)

  • Python3メモ 2017年・冬 - argius note

    ここ半年くらいで参考になった情報のメモ。 環境 Python 3.6.1 Pythonは、一部を除いて現時点での最新バージョンを使用していますが、そんなに古くなければたぶんOKです。 また、動作はWindowsで確認していますが、明示した箇所以外には特にOSに依存するところはないと思います。 ログインした状態でWebページ取得 ログインしないと見られないページを、Beautiful Soupでパースしたいときなどに使いました。 この例は、Requests という追加モジュールが必要です。Anacondaフルパッケージには入っています。 今回は、バージョン2.13.0を使用しました。 Requests: HTTP for Humans — Requests 2.13.0 documentation Requests: 人間のためのHTTP — requests-docs-ja 1.0.4 d

    Python3メモ 2017年・冬 - argius note
  • 古くなって引退したMacBookを廃棄しました - argius note

    古いMacBookを廃棄した日記です。 引退したのは、この7年半前の記事のMacBookです。 MacBook Pro を買いました - argius note http://argius.hatenablog.jp/entry/20081025/1224922349 2年前にロジックボードの交換をして延命していましたが、こんどはバッテリーが破損しました。(おのように膨らんだ。) この機種のサポート期限も終了していて、これはもう引退しかないようです。 7年半の間、おつかれさまでした。 ということで、廃棄の手続きを開始しました。 手順の確認 まず、下記ページで手順を確認。 リサイクルプログラム - PCリサイクルプログラム - Apple(日) http://www.apple.com/jp/recycling/computer/ このページ、「各種データや写真などを消去する方法について

    古くなって引退したMacBookを廃棄しました - argius note
    atm_09_td
    atm_09_td 2016/08/07
    そのうち考えておかなきゃ。
  • ネットワークが切断されたことをアラームで知らせるツールを作る(解説付き) - argius note

    我が家のパソコンのうちWindows8.1のノートパソコンだけ、ルーターとの相性が悪いのか、2日に1回程度はネットワークが切断されてしまいます。 そのため、2クリックでネットワーク接続を再起動するスクリプトを書いて対応しています。 Windows ネットワーク接続を2クリックで再起動する仕掛けを作る - argius note http://argius.hatenablog.jp/entry/2015/09/14/192706 これ自体は上手くいっているのですが、何か作業中に切断されてそれに気づかないで作業を続行したりすると、困る場合もけっこうあります。 切断されてしまうのは仕方ないとして、なるべく早くそれに気づきたい。 それなら、ネットワークがつながっているかを定期的にチェックして、切れていたらアラームで通知する仕掛けを用意すれば良いのでは?と思いました。 こういうのはフリーソフトなど

    ネットワークが切断されたことをアラームで知らせるツールを作る(解説付き) - argius note
  • System.in, System.out, System.errを再初期化する - argius note

    またかなり間が空いてしまいましてすみません。 今さら感あふれるネタですが、知らなかったのでメモ。 結論を先に書きます。 下記ページで知りました。 java - Resetting Standard output Stream - Stack Overflow http://stackoverflow.com/questions/5339499/resetting-standard-output-stream System.in, System.out, System.errの再初期化は、下記のようにします。 FileDescriptorを使うのがポイントです。 // import java.io.*; System.setIn(new BufferedInputStream(new FileInputStream(FileDescriptor.in))); System.setOut(ne

    System.in, System.out, System.errを再初期化する - argius note
  • Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note

    テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J

    Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note
  • メモ:java.util.concurrent.RecursiveTaskのFibonacci - argius note

    Java7で導入されたFork/Joinフレームワークの中に、java.util.concurrent.RecursiveTaskというクラスがあります。これは、再帰を使用して計算を行った結果を生成するためのForkJoinTaskの実装です。 このクラスのAPIドキュメントのページを見ると、例としてフィボナッチ数列の計算が書かれています。 RecursiveTask (Java SE 8 API ドキュメント) 準備として、ログ出力メソッドを定義しておきます。 static void log(String fmt, Object... args) { String now = String.format("%1$tT.%1$tL", System.currentTimeMillis()); now = "--:" + now.substring(3); System.out.printf

    メモ:java.util.concurrent.RecursiveTaskのFibonacci - argius note
  • Javaのシステムスレッドについて調べてみた (Java8) - argius note

    システムスレッドについて、あまり知らなかったので、調べてみました。 それ以外にも、APIで生成されるスレッドや、スレッドグループについても、少し触れています。 ※GrepCodeは2018年5月頃からサービスが利用できなくなっています。記事中のリンクはGrepCodeのものがそこそこ多いので、ご注意ください。 参考リンク HotSpot Runtime Overview - OpenJDK JVM Internals (JamesDBloom - Blog) Java SE 8 API仕様 GC: openjdk-8-b132.jar - GrepCode Java Project Source Mirror of OpenJDK repositories - GitHub 目次 はじめに 実行環境 システムスレッドの名称と簡単な説明 APIを使用したときのスレッド おわりに はじめに シ

    Javaのシステムスレッドについて調べてみた (Java8) - argius note
  • Eclipse4.4JavaEE + Tomcat7 でJavaEE6開発環境を構築 - argius note

    Eclipse JavaEE 4.4 (Eclipse IDE for Java EE Developers Luna) とTomcat7を使って、JavaEE6の開発環境を1から構築します。 JavaEE6入門ではなく、JavaEE6入門のためのEclipse環境を作るのが目的です。 今回はスクリーンショット多めにしてみました。 pom.xml https://gist.github.com/argius/91f74ea87e3bee10d1f1 (同日 22:00頃)記述ミスと記述不足を20箇所ほど修正しました。概要の文章を少し手直ししました。 目次 概要 前提条件 初期設定 ソフトウェアのインストール Eclipseの起動 プロジェクトの作成 プロジェクトの設定変更(Mavenの設定変更) デバッグ用サーバーでHello World ! EL式の動作確認 JSTLの動作確認 テスト用

    Eclipse4.4JavaEE + Tomcat7 でJavaEE6開発環境を構築 - argius note
  • 架空の拡張-filter,mapをStreamを使わずに組み込むとしたら - argius note

    Java8では、Stream APIにより、コレクションの関数型ライクな操作ができるようになりました。 mapのような処理が1行で書けるようになってうれしい反面、もうちょっとすっきりしたのが良かったな、という不満もあります。 ただ不満を言っているだけの人になるのも嫌なので、「もし、こういう風に実装したならば、あるいは」というのを考えてみました。 おさらい - Java8でStreamでfilterとmapを使う 既存のコードとの兼ね合いを考えると、入力も出力もList<String>の場合が多いと思うので、その前提で。 List<String> input = Arrays.asList("Map", "List", "Collection", "Stream"); List<String> filtered = input.stream().filter(x -> x.length()

    架空の拡張-filter,mapをStreamを使わずに組み込むとしたら - argius note
  • Skinny Frameworkで作ったアプリをHerokuで動かしてみよう - argius note

    Skinny Frameworkで作ったWebアプリをHerokuにアップしてみました。 ※この記事は、Skinny Framework 1.0.13時点のものです。 概要 Skinny Framework(以下、skinnyと表記)は、Herokuをサポートしています。 Packaging - Skinny Framework Deployment on Heroku を参照 ただし、現時点ではWindowsの場合に注意すべき点があるので、それについては後述します。 開発環境 Windows 7 professional 32bit Skinny Framework 1.0.13 (skinny-blank-app.zip) heroku/toolbelt/3.7.3 (i386-mingw32) ruby/1.9.2 準備 以前、Play2でHerokuを使った(下記リンク参照)ので、

    Skinny Frameworkで作ったアプリをHerokuで動かしてみよう - argius note
  • Skinny Frameworkで始めるScalaのWebアプリ開発 - argius note

    3/28にSkinny Frameworkのバージョン1.0.0 finalがリリースされました。 今回のエントリーでは、Skinny Frameworkの紹介も兼ねて簡単なWebアプリを作ってみます。 リリースのペースが速いので、1.0.0以降も既にいくつかリリースされています。 今回はバージョン1.0.4を使いました。 あ、あと、めずらしく画像ありのエントリーになっています。 概要 Skinny Framework(以下、skinnyと表記)は、Scala向けのフルスタックWebアプリケーションフレームワークで、ScalaRailsのようなことができます。 メイン開発者は@seratchさんで、GitHub上で開発が進められています。 私が把握しているレベルでの、主な特徴は以下。 JDK以外のインストールが不要 Scalatraフレームワークがベース CRUDでMVCな「ひな形」が自

  • Java SE 8 (5) - プラットフォーム、セキュリティー、他 - argius note

    最後に、API改良の残りのセキュリティー関連と、プラットフォームの変更、etc、について、説明します。 (2014-03-21追記)APIドキュメントのリンクを差し替えました。 目次 モジュール化の準備 コンパクトプロファイル セキュリティー関連 Javadoc APIjavax.toolsへの追加 JNIネイティブライブラリーの静的リンク モジュール化の準備 Project Jigsawで知られるモジュール化ですが、Java8では導入が見送られました。 その代わり、Java9以降でモジュール化を導入する際に障碍となると思われる問題を事前につぶしていく準備が進められています。 Java8では、次のような準備が行われています。 クラスローディングの問題の取り組み 独自のサービスプロバイダーメカニズムをServiceLoaderに置き換える ライブラリーとの依存関係を解析するコマンドラインツ

    Java SE 8 (5) - プラットフォーム、セキュリティー、他 - argius note
  • Java SE 8 (3) - 新しい言語機能 - argius note

    このエントリーでは、(2)で触れた「ラムダ式」「メソッド参照」以外の新しい言語機能についてまとめています。 「ラムダ式」「メソッド参照」については、(2)を参照してください。 (2014-03-21追記)APIドキュメントのリンクを差し替えました。 目次 仮想拡張メソッド 実行時のパラメーター名へのアクセス 型への注釈 一般化されたターゲット型付けの型推論 繰り返しアノテーション 仮想拡張メソッド 仮想拡張メソッドは、インターフェイスの仮想メソッドに、デフォルトの実装を与えることができる機能です。 これまでは、インターフェイスを実装する場合、インターフェイスで宣言されたメソッドを必ず実装する必要がありましたが、Java8ではインターフェイスの仮想メソッドに、デフォルトの実装を施すことが可能になりました。 デフォルト実装があれば、必ずしもオーバーライドをする必要がなくなり、デフォルト実装のま

    Java SE 8 (3) - 新しい言語機能 - argius note
  • Java SE 8 (2) - ラムダ式、メソッド参照、ストリーム - argius note

    このエントリーでは、Java8の新機能のうち、最も大きな変更であるラムダ式と、それに関連するメソッド参照、およびストリームについてまとめています。 目次 ラムダ式とメソッド参照 関数型インターフェイス ラムダ式の内部表現 ラムダ式のキャプチャー ストリーム 関数型スタイルのコレクション操作 遅延評価 並列計算 ストリームの応用 ラムダ式とメソッド参照 Java8では、新しいAPIとしてjava.util.functionパッケージが追加されています。ここには、関数型インターフェイス(functional interface)と呼ばれる、さまざまな種類のインターフェイスが含まれています。これらのインターフェイスを使うことで、ラムダ式やメソッド参照を変数に格納したり、後で評価する(関数を呼び出す)ことができます。 関数型インターフェイス 関数型インターフェイスには、注釈@FunctionalI

    Java SE 8 (2) - ラムダ式、メソッド参照、ストリーム - argius note
  • Java SE 8 (1) - 概要と一覧 - argius note

    このシリーズは、2014-03-18に正式リリースが予定されている、Java SE 8の新機能と拡張機能についてまとめたものです。 (2014-03-21追記)予定通り、2014-03-18(現地時間)にリリースされました。APIドキュメントも公開されたので、そちらに差し替えました。 ここで触れている内容の範囲では、今後おそらく変更は無いと思いますが、リリース後に確認する予定です。 また、外部リンクについては、リリース後に変更する可能性があります。 目次 シリーズ目次 コンポーネント別 一覧 実行環境 注記 参考リンク シリーズ目次 Java SE 8 (1) - 概要と一覧 (このエントリー) Java SE 8 (2) - ラムダ式、メソッド参照、ストリーム ラムダ式とメソッド参照 ストリーム Java SE 8 (3) - 新しい言語機能 仮想拡張メソッド 実行時のパラメーター名への

    Java SE 8 (1) - 概要と一覧 - argius note
  • Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note

    この記事は、個人的なおさらいのための、Java Concurrency Utilitiesの一部を使ったサンプルとメモです。 目新しいものは特にありません。 記事内のサンプルとAPIドキュメント参照はJava7(Java SE 7)を基準にしていますが、Java Concurrency Utilities自体は一部を除いてJava5(Java SE 5.0)から使えるようになっています。 あと、いつものことですが、画像がありません。 追記(2014-01-05): この機能の呼称は (Java) Concurrency Utilities が公式で、この記事内の"Utility"というのは正確ではない+混在していますのでご注意ください。ごめんなさい。 追記(2014-08-15): この記事は、キーワード"Java Concurrency Utilities"でGoogle検索した時に2番

    Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note
  • WebサービスからJSONを取得してフロントPerlCGIで整形 - argius note

    フロントのWebサーバはPerl,PHP,Rubyくらいしか使えない環境で、アプリ体はそれ以外で実装したい。 プロキシサーバも使えないので、どうしたものかと思っていたら、Webサービス方式にすれば良かったことに気づいたので、ちょっと試してみました。 データ形式はXMLでも良さそうですが、最近はやっぱりJSONが便利みたいなので、JSONでやります。 今回やること 検索結果をJSONで返せるようにする(簡易Webサービス化) PerlCGIから上のWebサービスにアクセスし、結果のJSONを元にHTMLを生成 環境 Perl 5.10.0 要JSONモジュール(無かったのでCPANインストール) Play 2.0.4 後述のサンプルの動作環境です 簡易Webサービス もちろん、これは何で作ってもかまいません。 サンプルとして、Play(scala)で作ったものを載せておきます。 元々は、s

    WebサービスからJSONを取得してフロントPerlCGIで整形 - argius note
  • JUnitでテスト後にディレクトリを自動削除する機能を使う(Rules) - argius note

    比較的新しいJUnitでは、TemporaryFolder(org.junit.rules.TemporaryFolder)というRuleクラスが使用できます。 テストで使った一時ディレクトリを、テストが終わった後に自動で消すことができます。 Rulesの機能は、2009-08-04にリリースされたJUnit4.7で追加されています。 Javaで一時ディレクトリを使うには JUnitとは関係なしに、Javaで一時ディレクトリを使う場合は、システムプロパティ"java.io.tmpdir"を参照します。 この値は、Windowsなら通常は環境変数"TMP"と同じ値が設定されています。 また、File.createTempFileメソッドを使えば、この一時ディレクトリに自動で一時ファイルを作ることができます。 File tmpfile = File.createTempFile("myprod

    JUnitでテスト後にディレクトリを自動削除する機能を使う(Rules) - argius note
  • Playのアプリ起動をMacOSXのlaunchdで制御する - argius note

    最近は落雷のせいで電源が瞬断し、UPSのような高級なものは使っておりませんので、常時起動のMac miniが落ちてしまうことが何度か発生しています。 そして、再起動後、Playのアプリが起動してくれません。launchdでアプリを制御しているので、再起動すれば問題ないはずなのです。 原因は単純で、RUNNING_PIDが残ってしまっているからです。 では、どのように解決すれば良いのでしょうか。 アプリの実行環境 MacOSX 10.6.8 Java 1.6 Play 2.1.1 RUNNING_PIDを作らないようにする デフォルトでは、アプリを実行するカレントディレクトリにRUNNING_PIDが作られます。これがpidファイルです。 システムプロパティ"pidfile.path"に任意のパスを設定すると、そのパスのファイルがRUNNING_PIDの代わりにpidファイルになります。 さ

    Playのアプリ起動をMacOSXのlaunchdで制御する - argius note
  • SBTを導入 - argius note

    SBT 0.11.3 Play2.0.4で使っているものを直接 SBTはこれまではPlayのものだけを使っていました。 このたび、Webアプリとは独立したアプリを作ってみることにしたので、改めてSBT環境をセットアップしました。 SBTの参考サイト 始める sbt (Scalajp Github) Eclipse + Scala + sbt + Specs2 な環境を試してみた(駄の備忘録) もし、CygwinでSBTを使う場合は、こちらのエントリーのbuildの方を参考にしてください。 ちなみに、デフォルトの最大ヒープサイズはメモリが足りなくて起動できませんでした。「いまどき4GBくらい使えて当然」なんでしょうか... これで、Playと同じようにSBTでテストやビルドができるようになりました。

    SBTを導入 - argius note