簿記2級に合格した。


11月15日に受験した第123回簿記検定試験(2級)について結果が先週に届きました。
(参照)簿記2級を受験した(勉強期間4ヵ月)。
封筒を開ける前からドキドキでしたが、この厚紙の感覚は果たして!
boki2.jpg
80点で無事合格!
70点が合格ラインで一見すると余裕に見えますが、4点の回答を3つ間違えればアウトのギリギリでした。
以下、詳細(各20点)。
・第1問 仕訳問題:12点
→暗記が必要な仕訳が苦手なまま試験に突入しました。結果は想定通り-8点。
・第2問 仕訳日計表・総勘定元帳・補助元帳の作成(5伝票制):20点
→作業に徹するこのような問題は練習を重ねていたので想定通り満点。
・第3問 本支店合併財務諸表:16点
→本支店会計は予想問題でもあったのでかなり集中したのですが、貸借合計の計算で誤ったと思われます。
・第4問 部門別計算:12点
→初めて見た「総括配賦」でダメだったようです。
第5問 工程別総合原価計算:20点
→ここもかなり集中して学んだところなので満点でした。
ヤマを張った部分を集中的に勉強していたので得点にムラがありました。
全体的に正しい理解ができていない部分があるんだろうな。
いずれにせよ合格は合格。
年始の目標であった簿記2級取得を達成できました。
ビジネスの基礎体力をつけるのが目的だったので、これ以上の簿記の勉強をすることは無いでしょう。
今年の年末年始は心おきなく休むことができそうです。

簿記2級を受験した(勉強期間4ヵ月)。


去る11月15日(日)に日商簿記2級(第123回)を受験しました。
勉強開始の7月23日から約4ヵ月間の長い勉強の日々でした。
テーマ「簿記2級の勉強」 by umakoya|30日ブログ
テーマ「簿記2級の勉強2」 by umakoya|30日ブログ
テーマ「簿記2級の勉強3」 by umakoya|30日ブログ
テーマ「簿記2級の勉強4」 by umakoya|30日ブログ
簿記3級の資格を取得したのが2月のこと。
>>簿記3級を約1ヵ月で受験した。(追記:合格した)
仕事で簿記知識を求められることは無いのでこれで終了しても良かったのですが、せっかく取得した簿記の知識を忘れる前に、自営業向けの3級から中小企業向けとなる2級取得を目指すことにしました。
しかし勉強を再開するのはなかなか気が重く、2月の次の6月受験は見送り、記憶が薄れかけてきた7月に11月受験を決断しました。
以下、勉強開始からの4ヵ月間を振り返ります。

続きを読む

CakePHPでのセキュリティ対策メモ

百式さんのブログIDEA*IDEAの記事「CakePHPのAuthComponentではまったところ」から、以前に小生が「人力検索はてな」でした質問にリンクされた記念(同じ問題に直面したようで嬉しい)として、CakePHPのセキュリティ対策について途中までまとめて放置していたメモをアップします。

CakePHPで開発した「30日ブログ」は、不特定多数が利用するウェブアプリケーションであるためセキュリティ対策にはかなり気を使いました(一応ウェブディレクターの端くれとしてもこの辺は慎重に)。
そしてウェブアプリケーションの一般的な脆弱性については、CakePHPがある程度まで自動的に処理してくれます(フレームワークの素晴らしいメリット)。
そこでCakePHPと代表的な脆弱性3つについてまとめました。
●SQLインジェクション
・概要:ユーザーが任意のSQLを実行できデータベースが不正操作される。価格.comが昔くらった。
・PHPの対策:入力値をエスケープする。DBごとに関数が異なるので使い分ける〔mysql_real_escape_string(),pg_escape_string()〕。
・CakePHPの対策findreadなどの組込関数は自動処理されるので対策不要。ただし自分でSQLを組み立てて実行している場合はセオリー通りの対策が必要。
●クロスサイト・スクリプティング(XSS)
・概要:ユーザー入力がそのままHTMLに表示され任意のコードが実行される。はまちさんの得意技。
・PHPの対策:HTML出力時にサニタイジングする〔htmlspecialchars($str,ENT_QUOTES)〕。
・CakePHPの対策viewでサニタイジングする。省略記法h()。echoも含めてe(h($value))で覚えよう。
●クロスサイト・リクエスト・フォージェリ(CSRF)
・概要:管理者権限をもつユーザーにURLをクリックさせて不正な操作を強いる。相手は死ぬ。
・PHPの対策:ワンタイムチケットを発行する。
・CakePHPの対策:・・・
今回CakePHPで開発していてMVCモデルを採用するCakePHPはCSRFの脆弱性が生じやすいのではと思いました(素人の感想です)。
MVCモデルではhttp://example.co.jp/モデル/コントローラ/パラメータとなりますが、プログラムの作り方によってはhttp://example.co.jp/user/delete/1というURLをクリックすることでuser_id=1が削除されてしまいます。
そこで「ログインしたユーザーしか自分のIDは削除できないことにすれば」という処理を加えても、ログインしたユーザーが<a href=http://example.co.jp/user/delete/1>エロ動画</a>なんでリンクを思い余ってクリックしたら、ログイン状態が継続している場合は同様に実行されてしまうのです。
CakePHPでの対策方法を調べると色々あるのですが、急に敷居が上がってしまい、また同一ページ内に複数のフォームがあった場合にSecurityコンポーネントがうまく動きませんでした。
"クロスサイトリクエストフォージェリ対策" フォーラム – CakePHP Users in Japan
(小生は無理やりな対策を施しましたが現在のバージョンでは正式な対応方法があるのでしょうか?)
CakePHPだからCSRFが危険と言うわけではないですが、参考書通りに作成すると危ないなーと感じた次第です。

フレームワークのメリットはアプリケーションの機能に集中して開発ができるところだと考えています。
CakePHPもセキュリティ面をカバーしてくれるので安心して開発ができました。
セキュリティの専門家に怒られそうですが・・・。

簿記2級試験まで残り1ヵ月


社会人として幅を広げるために今年から勉強を始めた簿記。
簿記3級の試験があったのが2月末です。
(参照)簿記3級を約1ヵ月で受験した。(追記:合格した)
問題レベルが容易だったことに助けられ何とか合格を果たし、そこから5ヵ月後の7月末から簿記2級の勉強を開始しました。
簿記2級・勉強の履歴
テーマ「簿記2級の勉強」 by umakoya|30日ブログ
テーマ「簿記2級の勉強2」 by umakoya|30日ブログ
テーマ「簿記2級の勉強3」 by umakoya|30日ブログ
そしてあっと言う間に次回第123回・日商簿記検定試験の11月15日(日)まで1ヵ月となりました。
今回は資格の学校TAC[タック]に通うことに決め、なんとか授業に喰らいついていくも、仕事の忙しさや体調不良や各種イベント事や飲み会で、想定カリキュラムから落ちこぼれつつあります。
簿記2級の合格水準の勉強時間は160時間~200時間と言われており、小生の現時点での勉強時間は95時間程度。
残り30日間を考えると、最低でも1日2時間以上は勉強しないと合格水準に達しません。
そう考えると絶望的な気持ちになりますが、何とか諦めずに残り1ヵ月を邁進したいと思います。
そして総務で働く後輩から、さらっと簿記2級を持っていることを告げられ、ますます暗澹たる気持ちになるのでした。
#余談
TACの夜授業には周辺オフィスで働いていると思われる若い女子OLがたくさんいるよ!
みんな、ここで出会うと良いよ!
試験1ヵ月で目に殺気が宿っているけど。

CakePHP(MySQL)でちょっと変わった検索条件。

久しぶりのCakePHPネタです。30日ブログに機能を追加しました。
http://30daysblog.com/
30日ブログ

数ヶ月ぶりにソースコードを覗けば、もはや自分で書いたものとは思えない世界が広がっていました。
それでも既存コードをコピペしてイジリながらで、思っていたより簡単に機能追加。
フレームワークでMVCが分離されていることで、後から見返してもわかりやすく、機能の追加がしやすいということを実感しました。
●ランダム表示
DBに登録されている「テーマ」をトップページにランダム表示(3件)するようにしました。
$home_theme = $this->Theme->find('all', array(
'limit'=>3,
'order'=>'rand()',
));

‘order’=>’rand()’はCakePHPではなくMySQLの実装(”order by rand()”)です。
ランダムな数値を出して、それをidの検索条件にして・・・など考えていましたが簡単でした。
●カンマ区切りフィールドの検索
DBに登録されている「テーマ」をカテゴリー別に表示するページを追加しました。
http://30daysblog.com/themes/cateview/1
cateviewという、何ともダサいネーミングのアクションです。
各「テーマ」レコードは「カテゴリー」フィールド(category_id)を持っているのですが、テーマが複数カテゴリーに属するように“1,3,5”のようにCSVでcategory_idを保持しています。
本来DB設計としてはやってはいけないことなんだと思いますが、諸々の面倒を考えこのような形をとっています。
このCSVの中から特定のcategory_idを取得する方法についてWhereのLIKE検索を考えました。
SELECT * FROM db WHERE category_id LIKE ‘%$param%’
しかしこれでは、$paramが”1″の場合、”1″以外に”11″や”10″などにもマッチしてしまいます。
まさに同じような課題を人力検索はてなで見つけました。
MySQLでデータの保存方法について質問です。 1つのフィールド内に「1,2,3」と言うようにカンマ区切りのデータを保存する箇所があります。通常、この部分は正規化して別テー.. – 人力検索はてな
なるほど正規表現を使うのかー。
以下CakePHPでの実装。
function cateview($param = null) {
$data = $this->Theme->find('all', array(
'conditions' => array('Theme.category_id REGEXP' => "^$param$|^$param,|,$param$|,$param,"),
));
$this->set("data", $data);
}

CakePHPではfindを使えば柔軟にSQL文を作成できます。
以下、自分でコピペする際の雛型。
$data = $this->Model->find('all', array(
'conditions' => array("Model.id" => $param,"Model.hoge <>" => ""),//条件式。","でand。比較演算子の位置に注意。
'fields' => array('id', 'title'),//取得するフィールド。未指定は全件。
'recursive' => 0,//アソシエーションの取得数
'order' => 'Model.created desc',//取得順序
'limit' => 100,//取得件数
));

DB設計をいじらない表面上の処理であれば色々と簡単に実装できそうです。

  • 他のブログ

    育児で買ったモノたち
  • Twitter

  • 最近の投稿

  • 最近のコメント

  • はてなブックマーク

  • RSS購読

    RSS Feed RSS - 投稿

  • カテゴリー

  • 月別

  • カレンダー

    2017年3月
    « 2月    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
  • プロフィール


    健康・医療系の出版社でウェブに関わる営業企画と浅い技術。Webディレクター?
  • キーワード検索