タグ

Qiitaとprogrammingに関するdecoy2004のブックマーク (20)

  • 責任(関心)を意識したアプリケーション設計 - Qiita

    プログラムが上手く組めるようになりたい プログラミングが上手くなりたいと考えたときに、個人的には『名付けを意識』するのと、『アプリケーション設計のときに責任を意識する』考え方を取り入れることをおすすめしております。 今回は『アプリケーション設計のときに責任を意識する』ことについて書いてみたいと思います。 基的には単一責任原則と、関心の分離のお話になります。 ※ タイトルに『関心』というワードがありますが、アスペクト指向プログラミングの話ではありません 単一責任原則とは まずは単一責任原則とは何かについてです。 よく単一責任原則の説明では「クラスを変更する理由は複数存在してはいけない」というニュアンスの言葉がよく使われます。 例えば、社員管理システムの実装を行いたい場合、一つのクラスに「社員登録」「出勤管理」「給与管理」などの機能を詰め込むと、『社員登録』の変更をする際にそのクラスが変更さ

    責任(関心)を意識したアプリケーション設計 - Qiita
  • 引き継いだソースコードをメンテナンスしやすくする。 - Qiita

    引き継いだコードは、メンテナンスしやすい状況になっていないことが多い。 「引き継いだソースコードを改変する前に」 http://qiita.com/nonbiri15/items/47e25c2d5fb46f3495df で引き継いだコードの可読性を少し改善したとする。 しかし、まだまだメンテナンスしやすいものにはなっていない。 そこで、メンテナンスしやすくするためのリファクタリングについて私の現状の理解を述べようと思う。 残っている課題 ・グローバル変数が残っている 対策: グローバル変数と、そのグローバル変数を書き換える関数群を、1つのモジュールファイルの中に押し込めよう。 そのとき、そのグローバル変数に無関係な関数や変数を、そのモジュールファイルに含めないようにする。 グローバル変数を参照する側、extern で参照できるようにしておく。 そのようにファイルを分割することで、グローバ

    引き継いだソースコードをメンテナンスしやすくする。 - Qiita
  • 若手エンジニアを不幸にしないための開発の「べからず」集 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 若手エンジニアを不幸にしないための開発の「べからず」集を書いてみました。 「若手エンジニアを不幸にしないため」とは書いていますが、若手に限った内容ではありません。 いろんな開発の「べからず」のために不幸になるのは、とりわけ若手が多いということを意識したためだと思ったからです。 ・若手には、方針の決定権がない。 ・若手は、組織の中で道具のように扱われてしまう場合がある。 ・(今の)若手は、将来も働き続けるための力を付けるための組織内での教育が、(昔ほど)なされなくなってきている。 ・コスト意識が乏しいので必要性が乏しいことについてまで残業

    若手エンジニアを不幸にしないための開発の「べからず」集 - Qiita
  • ライブラリを探す方法 メモ - Qiita

    GitHubのトップページで一番上にある検索窓に”なにか言語の名前” awesomeでしらべると幸せになれた。 iOS awesome とかね。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    ライブラリを探す方法 メモ - Qiita
  • クリスマスもコードを書きたいアナタに送る! 次世代エンジニアの技術の学び方とは? 〜Qiitaの投稿データから読み解く、2016年の技術トレンド〜

    クリスマスもコードを書きたいアナタに送る! 次世代エンジニア技術の学び方とは? 〜Qiitaの投稿データから読み解く、2016年の技術トレンド〜

    クリスマスもコードを書きたいアナタに送る! 次世代エンジニアの技術の学び方とは? 〜Qiitaの投稿データから読み解く、2016年の技術トレンド〜
  • さいきょうの二重サブミット対策 - Qiita

    この記事はシステムエンジニア Advent Calendar 2015 - Qiitaの記事です。 弊社アーキ部で@kawasimaさんに教えてもらったさいきょうの二重サブミット対策について書いていきます! 二重サブミットが発生するケース 不正な更新リクエストが発生するケースとして、以下のものが考えられます。 サブミットボタンをダブルクリックする 戻るボタンで戻って、再度保存ボタンを押す 完了ページでブラウザリロードする CSRF攻撃による不正な更新リクエスト 1. サブミットボタンをダブルクリックする 確定ボタンをダブルクリックすることによって、ユーザが意図していないリクエストが発生してしまうケース。 2. 戻るボタンで戻って、再度保存ボタンを押す 処理完了画面から戻るボタンで前の画面に遷移し、再び確定ボタンを押すケース。 来は入力➡︎確認➡︎完了の画面遷移が適切だが、その画面遷移にな

    さいきょうの二重サブミット対策 - Qiita
    decoy2004
    decoy2004 2015/12/23
    フレームワークが提供している?
  • DIS例2 / PHPは配列型と辞書(HaspMap)型が区別不能な言語! | PHPを使いもせずDISってる君達へ - Qiita

    PHPはよくDISられることがあります。しかし、実際にはほとんどPHPを利用していない人が印象だけでDISってることが多いような気がします。 そこで、PHPがよくDISられている点について、実際どうなのかをPHP未体験者向けに解説していきたいと思います。PHPを触ったことない人でもわかりやすいようにシンプル目な仕様のRubyを例に説明していきたいと思います!( Ruby触ったことなくても、その他のOOP言語を触ったことあれば雰囲気は理解できるように書いています ) DIS例1 / PHPは配列操作がしづらい PHPの配列操作は扱いづらい等とDISる人たちがいます。実際のところどうでしょうか。 以下のような処理を配列への中間変数を用いず行うコードを例に考えてみます。

    DIS例2 / PHPは配列型と辞書(HaspMap)型が区別不能な言語! | PHPを使いもせずDISってる君達へ - Qiita
    decoy2004
    decoy2004 2015/12/22
    php は罠とバッドノウハウが多すぎる。マジック変数とか配列関数など。言語が進化してもライブラリが罠満載。
  • HamcrestのMatchersに定義されているメソッドの使い方メモ - Qiita

    apply plugin: 'java' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.11', { transitive = false } testCompile 'org.hamcrest:hamcrest-all:1.3' } >gradle dependencies testCompile - Compile classpath for source set 'test'. +--- junit:junit:4.11 \--- org.hamcrest:hamcrest-all:1.3 JUnit 4.11 はデフォルトだと hamcrest-core の 1.3 に依存している。 今回は別途 hamcrest-all を依存関係に追加するので、 transitive = fal

    HamcrestのMatchersに定義されているメソッドの使い方メモ - Qiita
  • Java System.exit()処理を無効にして代わりにExceptionを発生させる。 - Qiita

    バッチ処理などでSystem.exit()で終わる処理をJUnitでテストするとJVMが終了してしまう。 exit()処理の代わりにExceptionを発生させ、テストを可能にするためのクラス。 基的にはSystem.exit()など使わずにreturnを使うんだが、古いバッチをメンテナンスするとよくある。 package testlib.system; import java.security.Permission; /** * System.exit()処理を無効にし代わりにExitExceptionを発生させる.<br> * JUnitでSystem.exitのある処理をテストを実施する場合等に使用する。<br> * クラスはスレッドセーフではないのでマルチスレッド環境では利用不可。<br> * シングルトンクラス。 * * @author boss_ape */ public

    Java System.exit()処理を無効にして代わりにExceptionを発生させる。 - Qiita
  • サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita

    はじめに Ruby 2.3が2015年12月25日にリリースされました。 そこでこの記事ではRuby 2.3の主な新機能を紹介していきます。 対象となるバージョン 以下のとおり、この記事では ruby 2.3.0 を使っています。 参考文献 今回紹介するサンプルコードは下記のサイトにあったコードをベースにしています。 New features in ruby 2.3 - BlockScore Blog ただし、実行結果を確認するために Minitest を使ったり、コードをいくつか変更したりしています。 サンプルコードはGitHubにあります この記事で使ったサンプルコードはGitHubに置いてあります。 興味のある方は手元で動かしてみてください。 JunichiIto/ruby-2.3-sandbox それではここからRuby 2.3の新機能を紹介していきます。 深い階層にあるハッシュの

    サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita
    decoy2004
    decoy2004 2015/11/17
    似ているが微妙に挙動が違うメソッドがあるなあ。
  • Ruby のココがダメ - Qiita

    タイトルは釣りです。Ruby に盲目的に惚れている迂生には Ruby の痘痕(あばた)はエクボです。 それはともかく。 メソッド名の別名がありすぎ 「あなたは map 派? それとも collect 派?」っていう問いがまず嫌い。 いや,別名にも意義があるとは思うんだけど,記憶の負担が大きい。 自分では map しか使わなくても,他人のコード読むんだったら collect を知っていなくちゃならない。 しばらく前に reduce っていうメソッド見て,そんなのあったっけ?と思ったら inject の別名だった。 map/collect と inject/reduce の名前とその背景にある発想については,Rubyist Magazine に良い記事がある: そうかと思えば,Array#delete_if と Array#reject! みたいに,働きは基的に同じだけど,削除が行われなかっ

    Ruby のココがダメ - Qiita
    decoy2004
    decoy2004 2015/10/28
    ドキュメントが説明不十分で何度もミス。 gem のエラーが多くてバージョンごとに解決策がまちまち。面倒な言語。
  • Javaですべての上場企業のと地方自治体のサイトをスクレイピングして大変だったこと - Qiita

    私は主にJavaを使って大量のサイトからクロールとスクレイピングをしています。 作っているサイトは happyou.info です。上場企業と官公庁と地方自治体とその他1万サイトくらいスクレイピングしています。 このエントリでは、技術的なこと特にめんどうくさかった点を書き残しておきたいと思います。基的なことかもしれませんが、私自身忘れそうなところもあるので。 1.上場企業は企業が入れ替わる 上場企業は毎日企業が入れ替わります。新規上場、上場廃止、合併、分社化、企業名変更は毎日のことです。この変化にキャッチアップするのが難しかったです。 日取引所グループ 「よし上場前からきっちりスクレイピングして事前に準備しておくぞ」と思っても、上場にあわせてサイトをリニューアルしたりする企業も多いので油断なりません。 官公庁のサイトは、民間企業に比べるとはるかに移転が少なく落ち着いています。 地方公共

    Javaですべての上場企業のと地方自治体のサイトをスクレイピングして大変だったこと - Qiita
  • Java の外部プロセスが返って来ない場合の対処方法 - Qiita

    Java で外部プロセスを起動する際は ProcessBuilder クラスを使いますが、 たまに処理が戻ってこない場合があります。 そんな場合に原因として考えられるのは、標準出力または標準エラー出力にバッファが溜まってしまっているという理由です。 例えば以下のコードの場合、標準エラー出力のバッファがいっぱいになっていた場合は proc.getInputStream() から処理が返って来なくなります。 String[] cmds = {"./foo.sh"}; ProcessBuilder pb = new ProcessBuilder(cmds); Process proc = pb.start(); String str; BufferedReader brstd = new BufferedReader(new InputStreamReader(proc.getInputStre

    Java の外部プロセスが返って来ない場合の対処方法 - Qiita
  • https://qiita.com/kenokabe/items/9c650ec8bcb1418c596d

    decoy2004
    decoy2004 2015/01/01
    解説と批判が混ざってて読みにくい。今のところ #関数型プログラミング でデバッガ、プロファイラの使い勝手がよさそうに見えないので入り込めないんだけど、実際にデバッガ使っている人はいるんだろうか?
  • 現場で使えるソフトウェアテスト - Qiita

    現場で使えるソフトウェアテスト Java編を読んだので要点をまとめ。 Step1 テストとは ソフトウェア開発では、様々な問題が発生するが、そのなかでよくあるのが動かない、誤動作、パフォーマンス問題人が作る上でミスは起こるのでテストが必要 テストの流れ 品質目標を立てる テスト密度(目標、上限、下限値)、バク密度(目標、上限、下限値) テスト計画 ソフトウェアテストの全体計画作成 実施スケジュール、予算、体制、環境構築手順、必要ツール利用手順、成果物の様式、バージョン管理、設計書の準備 テスト作成 期待動作、パターンの洗い出し、テスト環境構築、テストデータの作成、テストケース作成、レビュー テスト実施 作成したテストケースの実行 テスト検証 結果の確認、テスト関係者以外の利害関係者との調整(設計書管理、仕様管理、修正管理)、テスト実施者の作業管理、テスト報告のとりまとめ、テスト全体報告、再

    現場で使えるソフトウェアテスト - Qiita
  • 開放閉鎖原則と expression problem - Qiita

    ソフトウェア原則[1] - OCP(Open-Close Principle) と云ふ記事に「(引用者註: プログラムをオブジェクト指向で書き直すことによって) 修正の論理を、追加の論理に変換している」と書いてあったのですがそれは公平なものの見方ではないと思ったのでここに記しておきます。 開かれてゐると云ふことの真実 元記事にある C++ で書かれた例では、 Shape 親クラスに Circle 子クラスを追加しても既存の Point 子クラスや Line 子クラスの実装を修正する必要はないことが示されてゐます。つまり、Shape クラスは新たな図形の種類を表す子クラスの追加に対して開かれてゐるといふことですね。 しかしこの C++ の例は、図形に対する操作の追加に対しては開かれてゐません。例へば、既にある draw (描画する) といふ操作に加へて translate (平行移動する)

    開放閉鎖原則と expression problem - Qiita
  • R 3.0.0の大事な変更点 - Qiita

    大きめ目の変更点(個人目線) Long Vectorのサポート(64bit版)。 2^31-1以上の長さのベクトルが使用可能に。 使えるのはraw/logical/integer/double/complex/characterのベクトルとlistも。 文字ベクトルの要素の長さは今までどおり 2^31-1 bytes。 Long vectorに対するlength()はdoubleを返す。 インデクシングにはintegerではなくてdoubleを使うように。 行列、配列の場合、各次元の長さが < 2^31-1なら次元数の総和が > 2^31-1 もOKに。でも挙動は微妙。 などなど。しばらくは使うときは要注意。 パフォーマンス改善(オブジェクトコピーを減らす、とか、関数呼び出し周りとか)。 baseパッケージでビット演算サポート。see > ?bitwise S4クラスでrepresenta

    R 3.0.0の大事な変更点 - Qiita
    decoy2004
    decoy2004 2014/08/19
    『2^31-1以上の長さのベクトルが使用可能に。』
  • プログラマが持つべき心構え (The Zen of Python) - Qiita

    はじめに この記事はstackoverflowのThe Zen of Pythonに関する質問と解答(CC BY-SA3.0 ライセンス)を訳したものです。 The Zen of Pythonの日語訳は"我々は「Python」に何を求めているのか?"を参考にしました。 The Zen of Pythonとは The Zen of Pythonとは、Pythonプログラマが持つべき心構えを簡潔にまとめたものです。 Pythonを書かないプログラマにとっても、これは大いに役に立つはずです。 ちなみに、"Zen"は日語の「禅」です。 最初から全文を読もうとする必要はありません。この記事にざっと目を通してみて、気になった部分を読むことをおすすめします。 全文はPythonインタプリタ上で The Zen of Python, by Tim Peters Beautiful is better

    プログラマが持つべき心構え (The Zen of Python) - Qiita
    decoy2004
    decoy2004 2014/08/19
    『Now is better than never ずっとやらないでいるよりは、今やれ。』
  • String.formatが遅い理由 - Qiita

    JAL6-MD5 において、私の書いたコードが非常に遅いとご指摘いただいていたのですが、主な原因はClojureのformat関数にあります。 format関数は、 (defn format "Formats a string using java.lang.String.format, see java.util.Formatter for format string syntax" {:added "1.0" :static true} ^String [fmt & args] (String/format fmt (to-array args))) という定義で、中身はJavaのString.formatそのまま呼んでいるだけです。 そして、JavaのString.formatメソッドのソース(Oracle JDK 7u10 source)をみると、

    String.formatが遅い理由 - Qiita
    decoy2004
    decoy2004 2014/08/07
    『性能が要求される箇所では、format関数/String.formatを使わない方が良い。 書式に応じた出力が必要な場合でも、String.formatを使わずに、可能であれば自分でFormatterをnewして使いまわした方が良い。』
  • SwiftのArrayがヤバくなくなった - Qiita

    概要 思ったよりバズったので、いくつか加筆修正しました beta3でArrayの型指定の方法が変わったなーと思って眺めていたら、もっと根的な変化がありました。 SwiftのArrayがヤバイなどで話題になってたやつです。 公式ドキュメント The Swift Programming Language 変更点 Array in Swift has been completely redesigned to have full value semantics like Dictionary and String have always had in Swift.  This resolves various mutability problems – now a 'let' array is completely immutable, and a 'var' array is complet

    SwiftのArrayがヤバくなくなった - Qiita
  • 1