Enviar pesquisa
Carregar
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
•
Transferir como PPT, PDF
•
1 gostou
•
864 visualizações
Hiromu Shioya
Seguir
世間や社内で見かけた困ったコードをdisることでコードレビューの必要性をアピールする
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 29
Baixar agora
Recomendados
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
Open Source Software Association of Japan
Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回
Jun Ohtani
菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
Nagi Teramo
Amazon Dash xxx Button
Amazon Dash xxx Button
prprhyt
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
Recomendados
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
Open Source Software Association of Japan
Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回
Jun Ohtani
菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
Nagi Teramo
Amazon Dash xxx Button
Amazon Dash xxx Button
prprhyt
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!デベロッパーネットワーク
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】
株式会社キャッチアップ
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
エンジニア勉強会 エスキュービズム
MongoDBの使い方
MongoDBの使い方
Tatsuto Maetsu
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
Kanetaka Heshiki
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
Yuuki Namikawa
Stroustrup11章雑感
Stroustrup11章雑感
31 00
PCさえあればいい。
PCさえあればいい。
bleis tift
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
仮想記憶の構築法
仮想記憶の構築法
magoroku Yamamoto
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
as-2. メモリと CPU
as-2. メモリと CPU
kunihikokaneko1
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
Sword term02
Sword term02
Hakudou Fukuda
2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習
Jun Nakabayashi
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
Joe_noh
Elixirだ 第2回
Elixirだ 第2回
Joe_noh
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
Nishida Kansuke
textsearch_jaで全文検索
textsearch_jaで全文検索
Akio Ishida
Mais conteúdo relacionado
Mais procurados
データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】
株式会社キャッチアップ
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
karupanerura
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
エンジニア勉強会 エスキュービズム
MongoDBの使い方
MongoDBの使い方
Tatsuto Maetsu
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
Kanetaka Heshiki
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
Yuuki Namikawa
Stroustrup11章雑感
Stroustrup11章雑感
31 00
PCさえあればいい。
PCさえあればいい。
bleis tift
知って得する標準関数の使い方
知って得する標準関数の使い方
Soudai Sone
仮想記憶の構築法
仮想記憶の構築法
magoroku Yamamoto
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
as-2. メモリと CPU
as-2. メモリと CPU
kunihikokaneko1
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
Sword term02
Sword term02
Hakudou Fukuda
2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習
Jun Nakabayashi
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
Joe_noh
Elixirだ 第2回
Elixirだ 第2回
Joe_noh
Mais procurados
(20)
データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
MongoDBの使い方
MongoDBの使い方
カーネル密度推定を用いた店舗情報の可視化
カーネル密度推定を用いた店舗情報の可視化
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
Stroustrup11章雑感
Stroustrup11章雑感
PCさえあればいい。
PCさえあればいい。
知って得する標準関数の使い方
知って得する標準関数の使い方
仮想記憶の構築法
仮想記憶の構築法
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
as-2. メモリと CPU
as-2. メモリと CPU
PHP foreachでの参照渡しに潜む罠
PHP foreachでの参照渡しに潜む罠
Sword term02
Sword term02
2015年度 第1回バイオインフォマティクス実習
2015年度 第1回バイオインフォマティクス実習
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
Elixirだ 第2回
Elixirだ 第2回
Semelhante a 第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
Nishida Kansuke
textsearch_jaで全文検索
textsearch_jaで全文検索
Akio Ishida
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Kazunori Jo
Web 02
Web 02
XMLProJ2014
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
MySQLerの7つ道具
MySQLerの7つ道具
yoku0825
Gorinphp0729
Gorinphp0729
akitsukada
Gorinphp0729
Gorinphp0729
akitsukada
System select hint_for_h2
System select hint_for_h2
Jun Chiba
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
Active Support のコア拡張機能について
Active Support のコア拡張機能について
Tomoya Kawanishi
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
Haikara
Haikara
jewel12
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Hayato Mizuno
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件
Kazuki MATSUMOTO
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
What is Metasepi?
What is Metasepi?
Kiwamu Okabe
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
MT meets PHP
MT meets PHP
純生 野田
Semelhante a 第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
(20)
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
textsearch_jaで全文検索
textsearch_jaで全文検索
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Web 02
Web 02
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
MySQLerの7つ道具
MySQLerの7つ道具
Gorinphp0729
Gorinphp0729
Gorinphp0729
Gorinphp0729
System select hint_for_h2
System select hint_for_h2
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Active Support のコア拡張機能について
Active Support のコア拡張機能について
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Haikara
Haikara
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
What is Metasepi?
What is Metasepi?
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
MT meets PHP
MT meets PHP
Mais de Hiromu Shioya
不惑の生存戦略
不惑の生存戦略
Hiromu Shioya
勉強会なう
勉強会なう
Hiromu Shioya
LTの技術
LTの技術
Hiromu Shioya
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち
Hiromu Shioya
夏
夏
Hiromu Shioya
Tupperware
Tupperware
Hiromu Shioya
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道
Hiromu Shioya
自宅で本気を出さされた
自宅で本気を出さされた
Hiromu Shioya
クマとデバッグを
クマとデバッグを
Hiromu Shioya
クマとジャーニーマンとステマ
クマとジャーニーマンとステマ
Hiromu Shioya
お前の本気を見せてみろ!
お前の本気を見せてみろ!
Hiromu Shioya
Git道場を開催してきた
Git道場を開催してきた
Hiromu Shioya
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル
Hiromu Shioya
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平
Hiromu Shioya
2011年の漢字
2011年の漢字
Hiromu Shioya
ベジェ曲線を書いてみた
ベジェ曲線を書いてみた
Hiromu Shioya
オススメの技術書
オススメの技術書
Hiromu Shioya
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGit
Hiromu Shioya
肉とRubyとわたし
肉とRubyとわたし
Hiromu Shioya
祝辞
祝辞
Hiromu Shioya
Mais de Hiromu Shioya
(20)
不惑の生存戦略
不惑の生存戦略
勉強会なう
勉強会なう
LTの技術
LTの技術
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち
夏
夏
Tupperware
Tupperware
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道
自宅で本気を出さされた
自宅で本気を出さされた
クマとデバッグを
クマとデバッグを
クマとジャーニーマンとステマ
クマとジャーニーマンとステマ
お前の本気を見せてみろ!
お前の本気を見せてみろ!
Git道場を開催してきた
Git道場を開催してきた
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平
2011年の漢字
2011年の漢字
ベジェ曲線を書いてみた
ベジェ曲線を書いてみた
オススメの技術書
オススメの技術書
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGit
肉とRubyとわたし
肉とRubyとわたし
祝辞
祝辞
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
1.
Code sucks 人の振り見て
我が振り直せ 第7回社内勉強会
2.
3.
4.
5.
月の最終日を取得したいらしい //
検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break;
6.
7.
8.
コードをもう一度 //
検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break;
9.
10.
二段オチ $today =
time(); $s_year = date( "Y", $today); $s_month = date( "m", $today); $s_day = 1; $e_year = date( "Y", $today); $e_month = date( "m", $today); // 検索月の末日を取得 switch( $s_month ) { case 2: $last_day = 28; if ( ( $year % 4 ) == 0 ) { $last_day = 29; } break; } $ php -r "var_dump ( $year ) ; " NULL $ php -r "echo NULL % 4 ; " 0 ↓ 毎年閏年になるじゃん
11.
正解は $last_day =
date("t") ; http://jp2.php.net/manual/ja/function.date.php
12.
13.
14.
ソースをチェックしてみた $column_names =
array( ' 商品名 ', ' 商品種別 ', ' 重量 ', ' 備考 ', ) ; イヤな予感!!
15.
テーブルをチェックしてみた mysql> describe
item_master ; +--------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | item_id | int(11) | NO | | NULL | | | column_type | int(11) | NO | | NULL | | | column_value | text | YES | | NULL | | +--------------+---------+------+-----+---------+-------+ _, ._ (;゚ Д ゚)
16.
データをチェックしてみた mysql> SELECT
* FROM item_master ; ( ゚ д ゚ ) ( つ д⊂) ゴシゴシ ( ;゚ д ゚ ) ( つ д⊂) ゴシゴシ _, ._ (;゚ Д ゚) …? ! ( つ д⊂) ゴシゴシゴシゴシゴシ ( ; Д ) !!
17.
18.
ロジックをチェックしてみた // $result
には表示対象の商品コードが入っている while ($data = mysql_fetch_array($result)) { for ($i = 0 ; $i < count($column_names) ; $i ++) { $sql = "SELECT * FROM item_master" . " WHERE item_id = {$data['item_id']}" . " AND column_type = {$i}" ; $ret = mysql_query($sql) ; $item = mysql_fetch_array($ret) ; echo "<td>{$column_names[$item['column_type']]}</td>" ; echo "<td>{$item['column_value']}</td>" ; } }
19.
20.
21.
22.
コネタその1 if( $order
== _SER_ORDER_LAST_ ) { // 前日閲覧数順 } elseif( $order == _SER_ORDER_NEW_ ) { // 新着順 } elseif( $order == _SER_ORDER_FAV_ ) { // 登録数順 } else { // 更新順 } switch – case を 使え!!
23.
コネタその2 // $iRecCnt(
レコード数 ) が1以外なら // 不正アクセスらしい。 if($iRecCnt>1){ $strAttentMessage = " 不正なアクセスです。 "; } if($iRecCnt==0){ $strAttentMessage = " 不正なアクセスです。 "; } $iRecCnt != 1 じゃ ダメなの?
24.
コネタその3 //
取ってきたレコードを変数展開したいらしい。 $sorter = $aRecData[0][c_sorter]; $page_title = $aRecData[0][c_page_title]; $page_content = $aRecData[0][c_page_content]; $mailflg = $aRecData[0][c_mail]; $signflg = $aRecData[0][c_sign]; $backlink = $aRecData[0][c_backlink]; $name = $aRecData[0][tname]; $cl_bg = $aRecData[0][color_bg]; $cl_text = $aRecData[0][color_text]; $cl_link = $aRecData[0][color_link]; $cl_vlink = $aRecData[0][color_vlink]; $cl_hr = $aRecData[0][color_hr]; $cl_title = $aRecData[0][color_title]; extract($aRecData[0]) ; じゃ ダメなの?
25.
コネタその4 (1/3) //
なんだかいろんなコネクションがある。 // INSERT 祭りが始まるようだ。 $conn->begin_trans(); $conn_sub->begin_trans(); $conn_s->begin_trans(); $conn_msg->begin_trans(); $conn_ad->begin_trans(); $conn_foo->begin_trans() ; $conn_bar->begin_trans() ;
26.
コネタその4 (2/3) //
ちょっと行数が多くて心が折れそうだが、 // 処理にしくじったらロールバックさせたいようだ。 if(!$conn->execute($strQue)) { $conn->rollback(); $conn_sub->rollback(); $conn_s->rollback(); $conn_msg->rollback(); $conn_ad->rollback(); $conn_foo->rollback() ; $conn_bar->rollback() ; db_regist_error($conn); }
27.
28.
29.
Baixar agora