タグ

ブックマーク / qiita.com/kawasima (11)

  • 本番と開発…慢心、環境の違い - Qiita

    番と開発の環境の違いで、番障害を起こしてしまった…という経験がないシステムエンジニアなど存在しないと思います。 どういう点で問題が起こり、どういう対策をすべきだったのか、経験をもとに書きだしてみます。 (ここで開発と呼んでいるのは、一応番以外のステージング、テスト環境も含みます) ミドルウェア設定 Webサーバ 同時接続可能数(MaxClients) 開発環境では、あまり気にしないパラメータですが、番では慎重に設定しないと次のようなトラブルを起こします。 MaxClientsが小さすぎて、システム間連携APIがタイムアウトしてしまった。 MaxClientsが大きすぎて、サーバのメモリが枯渇した。 番でのトラフィックが正確に予測できなければ、デフォルトのままにしておいて、様子をみながらチューニング、の方が下手に設定するより事故が少ないように思います。 リライト コンシューマ向けの

    本番と開発…慢心、環境の違い - Qiita
  • 究極のファイルダウンロード - Qiita

    アップロードと比較するとタイトルは釣り気味なのですが、ダウンロードにまつわるパターンをまとめます。 ふつうのダウンロード アップロードほど考えなきゃいけないことは多くないですが、ハマりポイントはいくつかあります。 ファイル名 何も対策せず日語をファイル名にすると、当然のように化けます。

    究極のファイルダウンロード - Qiita
  • 外部サイトへの遷移させるとき注意すべき1つのこと - Qiita

    SNSなどプライベートな記事をユーザが書けるページから、外部サイトへリンクする場合、リファラーによって秘密のURLが漏洩しないように、リダイレクト専用のアプリを用意することがあります。 また、自サイトからの外部サイトへの遷移を把握するためにも、そういうリダイレクト専用アプリを用意してログを落とすようにすることがあります。 これは、特に何もしないと格好のフィッシング詐欺の踏み台になります。 みたいなリンクを、どこかの掲示板などに貼られると、「おっ、フェイスブックのリンクじゃん」 ってことで、踏んでしまう人がいるからです。 対策です。 リファラチェック HTTP_REFERERが自サイト以外だったら、エラーにする設計です。あまりないとは思いますが、こういう設計をされているサイトを見かけたことがあります。 当然ながらRefererはクライアントの設定で送らないように容易にできます。(auのガラケ

    外部サイトへの遷移させるとき注意すべき1つのこと - Qiita
  • Excel方眼紙を支える技術2016 - Qiita

    POIを使ったExcel帳票の出力は、システムエンジニアにとっては日常茶飯事、おちゃのこサイサイであります。 takezoen先生による2015年版はこちらになります。 ここで紹介されている、S式からExcel方眼紙を出力するライブラリaxebomber-cljは、こちらをご覧ください。 特筆すべきはaxebomber-cljでは、Excelにありがちな文字切れが起こらないというところです。そもそもExcel方眼紙は、入力文字列が自動改行されない制約を設けて、利用者が意図的な位置で改行をコントロールするために発明されたフォーマットであります。しかし、その特異な見た目が災いし、単に敬遠される存在にとどまっております。axebomber-cljは、文字幅とセル幅を計算し、文字切れしない位置で自動的に改行するようにしています。これにより、Excel方眼紙の文字切れしにくさを活かしつつ、煩わしさを

    Excel方眼紙を支える技術2016 - Qiita
  • Javaでのファイルコピー史 - Qiita

    レガシーなJavaで書かれたシステムのコードを見ていると、以下のようにInputStreamでファイルを開いて、OutputStreamでコピー先のファイルに書き込むみたいなものがあったりします。 try(InputStream input = new FileInputStream(srcFile); OutputStream output = new FileOutputStream(dstFile)) { byte[] buffer = new byte[BUFFER_SIZE]; int size = -1; while ((size = input.read(buffer)) > 0) { output.write(buffer, 0, size); } } 他にはどういう方法があるのでしょうか。ファイルコピーの歴史が詰まっている、commons-ioの実装の変遷をふりかえり、そ

    Javaでのファイルコピー史 - Qiita
  • 深夜の本番作業を安全に 半自動化エンジン「migrationTTL」 - Qiita

    10年近く前に作ったやつなのですが、いまだ当時と同じ課題を抱えているシステムエンジニアが多いので、この記事を書きます。 以前に、DevLoveで発表した内容です(後述する手順読み上げ機能を、Windows7に対応させています)。 Slideshare システムエンジニア番作業 システムエンジニア番作業は、オンライン停止後の深夜帯しかできないという現場も多いかと思います。より作業ミスも発生しやすくなるってもんです。私も若い頃は、そういう現場にいて当時飛び交っていた格言をメモっていたようです。 昔のEvernoteを見返していたら「移行」という謎メモが出てきた… ・準備の段階で勝負は決まっている。 ・「君はEnterキー押すのが早いな」 ・「パスワードってのは体で覚えるんだ」 ・慌ててCtrl+Cするんじゃない、落ち着いてrollbackだ。 ・「一回とめますか?」 — :SIer/k

    深夜の本番作業を安全に 半自動化エンジン「migrationTTL」 - Qiita
  • Shift_JIS文化からUTF-8への移行ガイド - Qiita

    まだまだ場所によってはShift_JIS文化は根強く、2015年が終わろうとしている現在でも、「ようやく我が社もUnicodeでシステムを作ることを考えるっ!」なんてところは多くあるかと思います。 そんな現場で、これまでJavaでShift_JISでシステム構築してきたSIer向けのUTF-8移行ガイドです。 文字長のチェック 文字長の入力チェックはShift_JISの世界では、半角文字は1バイト、全角文字は2バイトなので、以下のようなチェックロジックになっていたかと思います。 if (inputValue.getBytes("Windows-31j").length > 20) { errors.add("hoge", new ActionMessage("errors.maxlength", "ほげ", 10)); } UTF-8ではそれらの文字は、1バイト~3バイトで表されるので、バ

    Shift_JIS文化からUTF-8への移行ガイド - Qiita
  • セキュリティ監査で文句を言われないHTTPステータスコードの使い分け - Qiita

    最近はハンドリングしくてもいいや的な、入力改ざんで発生するバリデーションエラーをそのまま500のHTTPステータスで返すと、攻撃者が「なんか攻撃成功しちゃいそう」って思っちゃうとかなんとかで、監査的なところから「500はやめろ」って言われることがあります。 一理ある ということで、安易に500を返さない方法を考えてみます。 HTTPステータスコードにあまり馴染みのない方は、こちら…ではなく、こちらをまず読んでください。 HTTPステータスコードの使い分け基礎 400 まず、ユーザの入力値、データの状態によってエラーになるケースは 400 Bad Request とします。エラーメッセージを表示して再入力を促すHTMLページを返す、一般的な入力エラー系の遷移は200 OKを返しても、実用上問題はないかと思います。 ユーザの操作が原因で、サーバ処理がエラーになった場合も400で扱うのはおかしい

    セキュリティ監査で文句を言われないHTTPステータスコードの使い分け - Qiita
  • 業務システムにおけるロールベースアクセス制御 - Qiita

    RBACの基礎 業務システムの権限制御の基形はロールベースアクセスコントロール(RBAC)です。簡単化すると、以下のようなモデルです。 Subject(システムユーザ)は、複数のRole(ロール)を持っている。 Role(ロール)は、Permission(権限)のセットからなる。 Permission(権限)は、オペレーション(許可される操作)のセットからなる 具体的に、Redmineでの例をみてみましょう。 ユーザにはデフォルトで「管理者」「開発者」「報告者」のロールが割当可能である。 「報告者」ロールは、「Add Issues」の権限をもつ。 「Add Issues」の権限をもつユーザは、「Issueの新規作成」ができる。 このモデルをRedmineでは、以下のように表現しています。 Redmineは1人のユーザを、複数のプロジェクトに異なるロールでアサインすることができるので、上記

    業務システムにおけるロールベースアクセス制御 - Qiita
  • 多い日も安心設計 - Qiita

    アプリケーションエンジニアの多くは、眠れない夜を過ごしたことがあるでしょう。特に月に一度の…「月末締めバッチ」の日は。 そんなデータ量の多い日や、初モノのバッチが動く日でも安心して眠れるためのバッチ設計を考えてみます。 ログの設計 まず何はなくともログです。きちんとしたメッセージを出せていれば、専任の人がリカバリ可能にもなるってものです。 Audit用のログなど業務要件の強いものを除いては、だいたい3種類に分けるようにしています。 プログレスログ リカバリログ 例外ログ(調査のため) この分類でファイル単位も分けます。ログを必要とする人が、それぞれ異なるからです。 プログレスログ プログレスログは、特に長時間かかるバッチに対して、現在どのくらいまで処理が出来ているのかを目的として出力します。 トラブル発生時や、大規模移行作業時には、バッチの定期的なモニタリングと報告の必要が出てきます。「あ

    多い日も安心設計 - Qiita
  • S2-020類似攻撃のStruts1での対策方法 - Qiita

    恐ろしいことですが、実装が全然違うStruts2の脆弱性S2-020と同様の攻撃手法で、Struts1も脆弱性があることが分かりました。 http://www.lac.co.jp/security/alert/2014/04/24_alert_01.html ここではあまり明らかになっていませんが、原因は // Set the corresponding properties of our bean try { BeanUtils.populate(bean, properties); } catch(Exception e) { throw new ServletException("BeanUtils.populate", e); } finally { if (multipartHandler != null) { // Set the multipart request handl

    S2-020類似攻撃のStruts1での対策方法 - Qiita
  • 1