タグ

programmingとProgrammingに関するusadamasaのブックマーク (120)

  • GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して

    GoFデザインパターンの一覧表と,活用のためのコメント,および入門者が独学するためのリンク集(サンプルコード付き)。 入門者の独学を支援するために,このページのURLを提示して熟読させ,各パターンを短時間で効率よく学んでもらう。 デザインパターンはプログラマの常識だ。 Java使いかどうかは問わない。 にも関わらず,入門書を買ったまま,途中で挫折する人が多い。 挫折の原因は,パターンの数が23もあって,多いからだろう。 全パターンをすんなり覚えてもらうためには,各パターンごとに 「要するにこういう目的のパターンなんだ。」 「10文字で表現すると,パターンの意味はこうなんだ。」 という要点・質を,短いコメントで伝えれば助けになるだろう。 こういった学習を通して,Java言語の「設計思想」も併せて感じ取ってゆけるはず。 全パターンの一覧表(要約コメント付き) 全パターンについて,10文字以内

    GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して
    usadamasa
    usadamasa 2012/04/13
    GoFの23のデザインパターン一覧と使い所のまとめ
  • gitでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア

    以前gitで一度行った変更をなかったことにする方法4つを紹介しましたが、 日常的に git を使用していると他にも様々な 「なかったことにしたい」「元に戻したい」 という状況に遭遇します。 そのひとつひとつについて対処方法を紹介していきます。 目次 問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いてみた。でももう要らない。問題2: トピックブランチをマージしたけど実はまだ不完全だった。マージをやり直したい。問題3: リリース後に発覚したバグ。原因は30日前に自分が行ったコミットだった。なかったことにしたい。問題4: 新しいコミットしようとして間違えてgit commit –amendで書き換えてしまった。元に戻したい。問題5: 色々作業していたら作業ディレクトリの内容が混沌としてきた。一度綺麗な状態にしたい。問題6: 作業ディレクトリにゴミファイルが溜まってきた。一度綺麗

    gitでアレを元に戻す108の方法 | Webシステム開発/教育ソリューションのタイムインターメディア
    usadamasa
    usadamasa 2012/03/23
    "gitでアレを元に戻す108の方法 - TIM Labs"
  • time_t - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2009年2月) 古い情報を更新する必要があります。(2019年3月) 出典検索?: "Time t" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL time_t型は、C言語においてシステム時刻を表現あるいは保存するために標準Cライブラリが定義しているデータ型である。この値は標準ライブラリ関数のtime()によって得られる。このデータ型は、標準ヘッダファイルの<time.h>でtypedefによって定義されている。Cの国際標準規格ISO/IEC 9899:1999(通称C99)では、time_tを算術型 (arithmetic type[1]

    usadamasa
    usadamasa 2012/02/17
    "2009年2月13日 23:31:30 UTC、UNIX時刻が1234567890に到達する祝賀が行われる見込みである。この日は偶然にもグレゴリオ暦で13日の金曜日である。16進数で表したUNIX時刻の0x50000000(1342177280秒)も、偶然13日の金曜日である(2012年7月13
  • 64bit OS と 32bit OS でのデータ型の相違一覧

    Perl-XS なモジュールを 64bit OS で使っていると、ごく希に変数型サイズが問題で不具合を経験することがあります。例えば、メジャーどころで言えば、日語係り受け解析器のCaboCha/南瓜を例に挙げますと、 src/common.h の103〜107行目 static inline void replaceString (std::string &s, const std::string &src, const std::string &dst) { unsigned int pos = s.find (src); if (pos != std::string::npos) s.replace (pos, src.size(), dst); } の unsigned int pos = s.find (src); の部分ですが、32bit 環境では問題は発生しませんが、64bi

    usadamasa
    usadamasa 2012/02/17
    "ポインターを操作する場合は、環境依存しないように sizeof 関数でサイズを取得して、size_t 型の変数で値を受け取って操作するのがベターと思います。"
  • gitでリポジトリからのチェックアウト時に文字コードを変換する » tune web

    ようやく実現できたのでやり方をメモ。 設定ファイルで拡張子に基づくフィルタリングをすればOK。 ProGitの情報によるとリポジトリから取ってくるときをsmudge、リポジトリに突っ込むときをcleanと呼ぶらしい。 以下はリポジトリ内のソースファイルがUTF-8 BOM有、改行コードがLFCRの場合の設定例。文字コード変換はnkfを使っています。 WindowsのVisualStudioに合わせると上記設定が望ましいが、Linux環境でgccを使うにはBOM無しにして、改行コードをLFにする必要がある。 まず.gitconfigファイルに以下を追加する [filter "fixencoding"] clean = “/usr/local/bin/nkf -w8 -Lw” smudge = “/usr/local/bin/nkf -w -Lu” これでsmudgeでUTF-8 B

    usadamasa
    usadamasa 2012/02/15
    gitでリモートからpull/pushするときに文字コード及び改行コードを変換する設定。nkfを使用するので、リモートはwindowsの設定に準拠したほうがいいのかな?
  • 平安彩票 -首页

    测风塔风速风向监测系统解决方案 1 概述项拟根据测风场现场测风塔布局图设计一套风速风向监测系统����������。测风场共有6基测风塔以75米半径圆周分布�����,每基测风塔按照一定高度分布安装5台风速风向气象传感器����������。系统按照要求定时采集每台风速风向传感器的数据并上传至数据中心后台服务器�����,服务器完成对各个风速风向监测点数据的接收、存储和分析整理�����,并对数据库进行管理����������。具备实时数据浏览、历史数据检索、数据曲线功能����������。2 系统组成测风场风速风向监测系统由超声波风速风向传感器、供电系统、气象采集器、光纤交换机和后台监测主机组成����������。如图1所示为测风场系统框图:图1�����。�����。�����。 道路交通气象监测预警系统解决方案 平安彩票高速公路气象监测预警系统设计方案一、项目总体概述及系统构架

    usadamasa
    usadamasa 2012/02/11
    "cscopeはシンボルの定義場所や関数の定義,コールされている場所とかを探してジャンプとかもしてくれるツールです.ctagも関数の定義場所にジャンプしてくれるツールです.二つを使うとソースの編集がチョー楽になりま
  • grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々

    "GREP_OPTIONS"という環境変数に、常に付けておきたいオプションをあらかじめ指定しておくと、grepコマンドやxgrep(egrepとかfgrepとか...)を実行したときに、自動でオプションをつけて実行してくれます。 例えば、、、 $ export GREP_OPTIONS="--color=auto"とか。常に含めておくなら、あとは"-I"オプションとかですかね。これくらいなら"alias"でも良いわけですがw grepとか毎日使ってもおかしくないコマンドなので、こういう小さい効率化はどんどんやっていきたいところですね! オプション無しで実行した場合 GREP_OPTIONSを設定してから実行した場合 おまけ: --colorの色を変えたい場合 環境変数 "GREP_COLOR"に色コードを指定してやると良いです。 例えば、ハイライトを黄色にしたい場合とかは、以下のような感じ

    grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々
    usadamasa
    usadamasa 2012/01/30
    "GREP_OPTIONS"という環境変数を設定しておくと、grep実行時に自動的に付加してくれるとのこと。
  • 「HACKING: 美しき策謀 第2版」で脱・初心者エンジニア - As a Futurist...

    今年もあまりを読めていないのですが、かなり評価の高いを数冊読んでいます。その中でもピカイチにオススメしたいのが表題のです。最近第 2 版が出たようです。って、実はまだ読んでる途中なんですけどね。。。 「教科書」として素晴らしい出来 このの何よりもすごいと思った点は、頭から読んでいってすんなり全てが飲み込める点です。ここまで頭に吸い込まれるは久々に読んだ気がします。普通技術書だと、サンプルコードがあって、実際に実行してみてねーこんな感じになるから、って書いてあるんですが、自分で実際に実行してみないとイマイチピンと来ないことがあります(サンプル動かなかったりとかもある)。そういうは、通勤時間とかにちょこちょこ読むにはちょっとしんどいです。 HACKING がすごいのは、第 2 章のアセンブリやヒープ・スタックの解説、さらに第 3 章のバッファオーバーフロー等の脆弱性を突くといった部

    「HACKING: 美しき策謀 第2版」で脱・初心者エンジニア - As a Futurist...
    usadamasa
    usadamasa 2011/12/13
    "「バッファってのを確保した領域を超えて入れると危ないコードを実行させられるんだよ」というのをメモリの様子がアドレス付きで目で見て分かる様に解説してくれています。"
  • - 自動化のための nmake 入門講座 - 基本的なパターン

    usadamasa
    usadamasa 2011/11/18
    "Makefile を作る最初の動機として挙げられるのは,自分が複雑なコマンドを何度も入力していることに気づいたときです.こういったコマンドを簡単に実行できなければ,開発に必要なリズムを得ることができません."
  • PC�o������ | Windows��Linux�������s���������_

    ���I Windows������������C�����\�[�X��Linux�����s�������������A���{�I����������������������Windows�����\�[�X�������X�����������������ALinux��タ�s�������������l�������L�q�����������B �������AWindows��Linux�����������������������A����������������Windows�\�[�X�����X���������������������������������������|������������ヲ�����������B

    usadamasa
    usadamasa 2011/11/07
    "Windowsで作成されたC言語ソースをLinuxへ移行するにあたり、基本的にすでに作成済みであるWindows側のソースには変更を加えることなく、Linuxで実行できるように考慮して記述しています。"
  • クリティカルセクション

    並行プログラミング(Concurrent Programming)では、並行して動くプログラム(プロセスやスレッド)が種々の資源(メモリ、ファイル、DB、周辺装置・・・)を共有することが多い。これら共有資源をプログラムが取り合う局面をクリティカルセクション(Critical Section)という。クリティカルセクションは並行プログラミングの最も難しい部分であり、バグが生まれる原因にもなりやすい。以下、具体例で説明しよう。 鈴木さんが山科信用金庫の口座からCDで5万円引き出すとしよう。CDのシステム側では、まず預金残高が5万円以上あるかどうかを調べ、okならば預金残高から5万円引くと共に、1万円札を5枚出すことになる。 上記を擬似的なプログラムで見てみよう。 X(メモリ) ← 預金(DB) IF X > 5万円 THEN X ← X - 50,000 預金(DB) ← X ... 1.~4

    usadamasa
    usadamasa 2011/09/29
    ここで、読者の中には次のような疑問を持つ人がいるかもしれない。コンピュータのスピードを考えると、上記のようにタイミング良く処理が重なるなんてことは、たとえ意図的に試みても現実には起こり得ないのではない
  • はてなブログ | 無料ブログを作成しよう

    (インド旅行´25)ジャイプールにある黄色と緑を基調としたお洒落なポロクラブ『Polo Palladio Jaipur』 こんにちは、tomoeagle (Instagram)です。 インド3日目、この日は日帰りでジャイプールを観光。 前回のブログでも言ったけど、ジャイプールって日帰りで遊ぶような街では絶対にないからみんなはもっと余裕もってゆったりお日にち使ってね\(⌒ ͜ ⌒)/ 今回6時間のジャイ…

    はてなブログ | 無料ブログを作成しよう
    usadamasa
    usadamasa 2011/09/07
    例外クラスをコンポーネント間でどう分割するのかのガイドライン
  • Log4J徹底解説〜目次

    目次 概説 使い方(1) 使い方(2) 基のAppender ファイル保存系Appender ネットワーク系Appender JMSAppender OSログ系Appender JDBCAppender その他のAppender 1.3で追加されたAppender フィルタ機能 Joran Hacks(1.3) 自前 Appender の書き方!(1.3) Chainsaw(1.3) アスペクトはお好き? Log4cxxと小物ツール Log4php の使い方 Log4php の Appender たち もともとこの文書はバージョン 1.2.8 をベースに書いたものだが、2006年中に 1.3 がリリースされる、とアナウンスされていることもあり、フライングか?と思わなくもないが、1.3 対応をしました! あと、どうも要望のありげな log4php についての記述を大追加! 2007.9.1

    usadamasa
    usadamasa 2011/08/19
    "しかし、フツーに使っている分には、RollingFileAppender でローテートするログファイルを作るのがせいぜいで、あまり凝ったことまで解説されていないことが多いわけだが、実は筆者はとある理由で Log4J をハックしたので、
  • Windows時間データの相互変換 - Yoshi's Software Factory

    各データ形式によって精度・表現できる範囲が違っています。 ここで紹介するプログラムではオーバーフローなどのチェックは行っていませんので, その点は注意してください。 // time_t -> FILETIME 変換 FILETIME UnixTimeToFileTime(time_t t){ FILETIME ft; LONGLONG ll = Int32x32To64(t, 10000000) + 116444736000000000; ft.dwLowDateTime = (DWORD)ll; ft.dwHighDateTime = (DWORD)(ll >> 32); return ft; } // time_t -> SYSTEMTIME 変換 SYSTEMTIME UnixTimeToSystemTime(time_t t){ SYSTEMTIME st; FILETIME ft

    usadamasa
    usadamasa 2011/08/17
    windows時間データの相互変換関数。time_t,SYSTEMTIME,FILETIME間を変換できる。一旦time_tに変換すればうるう年などを考慮せずに日数の計算ができるぽい?
  • Java Tutorial 16 Stack Heap : guru99com

    usadamasa
    usadamasa 2011/07/14
    スタックメモリとヒープメモリの使われ方図解動画。分かったような気になれる。
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
    usadamasa
    usadamasa 2011/06/23
    モダンなC開発環境について。モダン〜って言い回しももう流行らないのかしらね。
  • プログラム言語 C の推奨されるスタイルとコーディング規範

    L.W.Cannon R.A.Elliot L.W.Kirchhoff J.H.Miller J.M.Milner R.W.Mitze E.P.Schan N.O.Whittingson Bell Labs Henry Spencer Zoology Computer System University of Toronto David Keppel EECS, UC Barkeley CS&E, University of Washington Mark Brader SoftQuad Incorporated Toronto 豊田 英司 (訳) 東京大学大学院数理科学研究科 向 修一 (訳) 浅沼 伸彦 (訳) 東京大学理学部 Abstract この文書は the Indian Hill C Style and Coding Standards を アップデートしたもので、最後の 3

    usadamasa
    usadamasa 2011/06/21
    C言語の推奨コーディング規約
  • ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して

    ある程度プログラマーとして経験を積めば、ソースコードを読んだときに、そのソースコードの良し悪しというものは、嗅覚を使って直感的に嗅ぎ分けることができるものです。実際、そのように体の感覚を使ってこのコードは不吉だと感じるところは実際大いにあり、コードの臭い(code smell)として知られています。 コードの臭い - リファクタリングの必要性を示す兆候 これはファウラーの名著 リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行購入: 94人 クリック: 3,091回この商品を含むブログ (312件) を見るでも紹介されており、こういった不吉な部分を適切に嗅ぎ分け

    ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して
    usadamasa
    usadamasa 2011/06/12
    この図で長方形の面積はソースコードのステップ数に比例しており、赤い色の濃いところはクローンペアとして検出された行数の比率を示しています。濃い赤色のところほどコピペされた部分の割合が高いことを示していま
  • 大量データを扱うときはArrayListよりHashSetを使おう - greennoahの備忘録

    最近は性能問題が徐々に収束してきました。 解決された問題のうちの1つをここで紹介したいと思います。 「あるバッチプログラムの性能要件が100万件のデータを60分で処理しないといけない」というものがあったのですが、計測してみると2.5時間で40万件弱しか処理できないという問題がありました。(このデータから100万件にかかる時間を算出すると17時間。。。) このバッチプログラム、最初の15分間は処理量が6500件だったのに、時間が経過していくとどんどん劣化し、3時間経過で800件前後となり、その後は徐々に劣化していく、かなりお粗末なプログラムでした。 メモリリークは発生していなかったので、ログを埋め込んで時間のかかっている処理を切り分けていくとDBから取得したデータをArrayListに格納し、それを存在チェックしている箇所(ArrayList#contains)がボトルネックであることが判明

    大量データを扱うときはArrayListよりHashSetを使おう - greennoahの備忘録
    usadamasa
    usadamasa 2011/06/10
    大量のデータを扱う場合にHashSetを使うと、ArrayListと比べて処理速度が相当短縮されるよという実験。
  • Java Set/HashSetよくある使い方 - Java入門

    特徴 ◇ 重複のないコレクション。重複のあるデータを追加しようとしても、追加されません。重複であるかどうかの判定は、格納要素のequalsメソッドで行います。 ◇ null要素。null要素を許容しますが、禁止する実装もあります。許容する場合、重複要素を持たないため、null 要素を最大 1 つしか持ちません。因みに、Setインタフェース実装の一つHashSetは、null要素を許容します。なので、格納した要素はnullであることもありますので、細心の注意が必要です。 構造 java.util.Collection        [I] ∟java.util.Set            [I]  ∟java.util.SortedSet        [I]  ∟java.util.EnumSet  ∟java.util.HashSet  ∟java.util.LinkedHashSe

    usadamasa
    usadamasa 2011/06/10
    HashSetの使い方はわかったけど、使われ方がわかんない。なにが嬉しいのこれ。