2017年08月04日

シェルスクリプトのデバッグ

めちゃくちゃいい情報をみつけた。
これは素晴らしい。

超ウィザード級ハッカーのたのしみ
異常時にちゃんと止まるシェルスクリプト

kshでも使えそうです。\(^o^)/


posted by koteitan at 17:00| Comment(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2017年03月31日

log4j2の設定ファイルの場所

結論から先に書くと WEB-INF直下ではなく、srcの直下

classloaderが探しにいくので、配置されたときの/web-inf/classesより上はダメ
クラスパスが通っているところでもよさそうだ。

しかしそんなことするぐらいなら、-Dで指定するほうがいいよな。

http://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams

うまく読まなかったら、エラーメッセージに〜〜ってシステムプロパティをTRACEにしてみろ
ってでるから、それにしたがって設定すればConfigのロードの動きが見えるようになるので、
役に立つと思います。
posted by koteitan at 16:20| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2017年03月16日

bashである値を探す

もういい加減、pythonなりperlなりつかってもいいルールにしてくれよ。
linuxだよ、linux。
まだbash縛りかーいと。ローカル変数ちゃんと定義してないやつ多いし、
exitで抜けれてないやつとかもあるし、もう嫌い。

マイグレーション案件とかだと、もう吐きそうになるほどの
シェルスクリプトをあーでもないこーでもないしなきゃならんと思うけど、
こんときにクソみたいなコードに出会った場合、
直したい気持ちと、ガラス細工のようにバグも利用して偶然動いていたらどうしよう、、という
2つの気持ちが揺れ動きませんか、私だけですか、そうですか。

んで、タイトルの話なんだけど、pythonとかだとsetでokな内容も
配列ぐらいしかないbashでは大変。
元のソースはなんか、1行ずつgrepシテマス・・・けど・・・(;´Д`)< if の条件句でいいやーん・・。
で、配列.containsとか in 配列 とか出来ねーのか調べてみたが、
caseでど根性でやるパターン以外は、シンプルにループして探すのを書くしかない模様。


これが一番シンプルかなー。

containsElement () {
  local e
  for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
  return 1
}

posted by koteitan at 17:11| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2013年04月04日

GROOVY グルービー? GROOOOOOOOOOVYyyyyyyyyy!

DIO様風に言うとグルゥゥゥゥゥゥゥゥゥヴイィィィィィィィィィィィィ!

Javaから形式的なところとかいつもこう書く、みたいな箇所を極力排除したといいますか。
まぁ、ここいらのリンクを見るとわかるんじゃないかな。
クロージャとかがちょっと慣れてないとむつかしいかもしれんけど。
http://www.slideshare.net/kiy0taka/jenkins-and-groovy

本はこれが良い感じです。
電子版ありゃよかったのになぁ・・。ipadで読書に慣れちゃってからは
活字はしんどいでう。重さと字の大きさが・・。(拡大したい・・。老眼乙。orz)



Dolphineの続きも書きたいんだけどね、ちょっと今年に入ってから忙しいんだよなぁ。
posted by koteitan at 10:48| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2012年12月17日

【本】世界で闘うプログラミング力を鍛える150問 ~トップIT企業のプログラマになるための本

なんかすごいタイトルやけどな。
ozyさんのとこで発見して即購入。



コンテスト系よりは若干アルゴリズム難度はゆるめのようだけど、
前書きから抜粋させてもらうと

本書の問題はトップ企業が面接で使う問題であり、そこにはトップ企業が求める能力が凝縮されています。また、仕様の曖昧な部分を自分で適切に設定する問題や、特殊な環境を想定したプログラムを書く問題も面接ならではと言えるでしょう。さらにオブジェクト指向設計、並列・分散システム、データベースというような発展的なトピックの問題までもが含まれています

とあるので、総合力や、実戦力などが重視される傾向の問題なのかな。

電子版が欲しかったなぁ・・・。
posted by koteitan at 16:06| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2012年11月15日

矩形(画像)の配置

ネタがないなぁ。
画像だけじゃなく、テキストエリアとかアプレットとか「矩形」なものは全部みたいだけど。

ど真ん中に合わせたいときはabsmiddleを使う。middleやcenterだと文字のベースライン(大抵一番下)に
画像中央がセットされてしまう





詳しくはこのリンク先参照
http://www.tohoho-web.com/html/attr/align.htm
posted by koteitan at 11:31| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2011年01月31日

同じことを書くな

ちょっと落ち着いたから、吐きだしておこう。
こりゃ酒の肴にもならんな。

if 条件1
if 条件2
  if条件3
  処理A
  else
 処理B
 else
  処理B
else
  処理B
  

なんだこれは!!!!
(実際にはこの構造で三段ぐらい繰り返して潜り処理Aと処理Bには共通な処理が大量にあるんだが。)



つまり条件1と2と3が同時に成立したら、処理Aでそれ以外は処理Bなんじゃろ。
なんでまとめないのか。そりゃ、最適化で消えるかもしれんよ。
実行には影響ないかもしれんが・・。

実際にはただの代入処理で、処理Bはデフォルトを入れているっぽい。
値参照に副作用無し。

つまり、
値=デフォルト
if 条件1&& 条件2 && 条件3
  値=処理A

これでおkだろうと。
共通処理をくくり出せば、無意味コードも発覚したりするよ。
A=B ←この代入いらんし!
A=C
if(A!=C) ← いや、絶対にfalseだし!割り込みか!非同期か!sync無いし!絶対違うし!

↑こういうのな。




自信マンマンでもっと大きいメソッドもあるんですよ(エッヘン!!←大いばり)
マジか・・・。続きを読む
posted by koteitan at 18:13| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2010年12月29日

データファイル

SQL文が入る可能性のあるデータファイルの区切り文字でカンマはいかんな…。
ハーッハッハ。

orz

grep 'split(",")' .*java | wc -l

見たくない現実が!
posted by koteitan at 11:00| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2009年02月16日

転送方式

素人か('A`)。

FTPでファイル転送する際、ASCIIかBINARYかを選ぶ。
この際、OS跨りなどが有れば、改行コードの変換が行われ、
ファイルが変わる。

ってか、おま、この業界で働いてて、こんなこと説明させられる
俺の気持ちがわかるか? 血圧あがってきたぜ・・。
そりゃー、ファイルサイズ変わるに決まってるじゃろう。
posted by koteitan at 16:24| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2009年01月14日

フレームワークと言いたいだけじゃね?('A`)

甚だ疑問なのだが、なぜシステムが用意しているクラスの
メソッドをそのままコールするだけのようなものが、
フレームワークと言えるのだ。
目的は(wikiから抜粋)

「多くの再利用可能なコードをフレームワークにまとめることによって、開発者の手間を省き、新たなアプリケーションのために標準的なコードを改めて書かなくて済むようにする」

例:
java.sql.Connection を纏めたもの(らしい)

中身は延々とこのようなものが続く。
public void close() throws java.sql.SQLException {
con.close();
}

※conは内部で定義されている、java.sql.Connection。
 このクラスのコンストラクタで引き渡すパラメータ。

理解できない。何がしたいんだ。
改悪すらある。
public int getHoldability() throws SQLException {
return 1;
}

本来の処理を呼ぶには、
× hogeCon.getHoldability()
○ ((java.sql.Connection)hogeCon).getHoldability()

不便にしてどうする。こんなのソース見られないと、
絶対にわからんぜ?よしんば、処理の注入なんだったら、なぜ
1で統一なのかをコメントに入れろと。

さらに恐ろしいことは、こういったフレームワークを作られる方は
単価が高いらしい(フレームワークという言葉が値段をつり上げている模様)

なんか、コンビニの弁当買ってきて、重箱に詰め直しました〜。
いやー、大変でしたよー。あ、この重箱は5万円ねー。みたいな。

フレームワークを作る事が目的になっている。手段が目的になる典型。
このようなフレームワークを使うことを強要された
アプリケーションソースはもう想像を絶するよ。

Connection 作成だけでこれだよ(都合、7段ぐらい経由する必要有り)
XXXXUtil.getXXXFactory().getXXXX().getXXXCreator()....

しかもそのConnection本体はコンストラクタで自分で渡すとか
もう、アボガド、バナナ(AA略

ファクトリー言いたいだけ、イニシエーター言いたいだけ、
クリエーター言いたいだけ、デザインパターンと言いたいだけ

┐(´д`)┌ ウンザリ


posted by koteitan at 16:31| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2007年08月13日

ショートコーディング

ショートコーディング界の権威であるozyさんの本が出た。ヽ(゚∀゚)ノ


amazonで予約注文してたのに

ご注文時に予定して おりました発送予定日となっておりますが、まだ下記の商品の調達ができておりませ ん。

ΩΩΩ<なんだってー

こんなの初めてだよ (´・ω・`)
どんだけ売れてるねん。
というわけで、まだ届いてないからレビューできんのよな。
Java についても言及あるといいな。

posted by koteitan at 10:03| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2007年05月30日

XML

超久々にコードを書いているが…。

XMLの処理('A`)マンドクセ

マッピングツールとかもあるようだが、
そのためにいちいちXLSとかなんやらかんやらを
書かねばならん。

たいしたXMLじゃなきゃDOM直接でも全然OKなんだが、
こりゃ、多分XMLの有用性をよくわかっていないからなんだろうなぁ。

なんか、基礎からじっくり勉強できる本とかないかねぇ…。
posted by koteitan at 18:29| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2007年04月26日

続・危険なプログラムの処方箋

1/3 ぐらい読んだ。
結構文体も「診断室」っぽく皮肉的な表現が多いかな。
読んでて「(・∀・)ニヤニヤ」。
電車でプログラムの本読みながら(・∀・)ニヤニヤ…変人( ゚д゚)ヤン


構造体の辺りで(/ω\)ハズカシー
そういや、昔平気でmemcmpで比較してた希ガス。
運良くパディングなかったから助かってただけか…orz

つうか、力一杯比較できる、とかそんなtipsを書いた希ガス。
最低やな、σ(゚∀゚; ∬オレ。悪いOJTの先輩やった。
正直スマンカッッタ。
イヤ、まてよ、
HOGE h,f;
ZeroMemory(&h,sizeof(HOGE));
Zeromemroy(&f,sizeof(HOGE));

ってやっておけば、パディングのゴミも一致するんで、
セーフか。ふむ、そういうことか。
こういう何も考えずに初期化しちゃうのも
フールプルーフていってプログラムでは良くないみたいだけど。
(思考を停めてしまうから)


代入は…OKか。一枚岩(narrowコピー)て書いておいたほうがいいんじゃないかなー。

あと「javaは1ファイル1クラスの運用が強制される」って間違いやろ。
正確には「javaは1ファイル1publicクラスが〜」だよねー。
publicじゃないクラスなら幾らでも定義できるし。

posted by koteitan at 16:09| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2007年04月24日

コーディングガイド

危険なプログラムの処方箋という本を買ってみた。
完全なるamazonのお薦め書籍衝動買い。

Cプログラミング診断室みたいな本っぽいかなぁ。
まだパラパラしか読んでないが、この筆者の
宮坂電人さんはCマガで連載してなかったっけかなー。

あー、Cマガ、なんで休刊なんだろうなぁ(´・ω・`)
IT、ITと騒ぐわりにはみんなプログラム嫌いなのかねぇ。

ところで、表題にもしたけど会社とかのコーディングガイドって 大抵ろくなもんじゃないよねぇ。
大規模開発ではしょうがないもんなのかな…
続きを読む
posted by koteitan at 21:56| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2007年01月29日

リファクタリング

名前はかっこいいシリーズ 

リファクタリングというとかっこいいが、
とどのつまり、外部仕様を変更せずに振る舞いを改善しませう、ってこと。

「おまい、継承って知ってるか?」

みたいな見るに耐えない数千行のクラスを泣きながら書き直すような
作業のことだ。そのためにはJUnit等でテスティングが簡単にできるようにする。
と、きれい事を並べられたところで、見るに耐えない元のコードは
大抵は分割単位が酷く、またそこら中のコンポーネントと強依存しているため、
テストクラスを書くのが容易ではない。

続きを読む
posted by koteitan at 18:29| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2006年07月13日

[Javascript]PFキー抑制

javascriptでPFキーを抑制する。

・onkeydownイベントでキーコードで分岐して、return false;
・F1キーはonhelpも拾わないとダメ(IE限定)
・F5キーはevent.keyCode=null;
 event.returnValue=false; が必要。

全部まとめると下記のようなコードになる。

<HTML>
<HEAD>
<SCRIPT TYPE="text/javascript">
function Test()
{
    event.keyCode=null;
    event.returnValue=false;
    return false;
}
</SCRIPT>
</HEAD>
<BODY onKeydown="Test()" onHelp="return false;">
Test
</BODY>
</HTML>


posted by koteitan at 19:12| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2006年06月21日

奇数アドレス

奇数アドレスにワードやロングワードではアクセスできません。
これはアーキテクチャ上の問題で、CPUから例外割り込み(バスエラー)が起きます。
試してみましょう。

下記のコードを実行してみましょう。


#include <stdio.h>

int main(void)
{
char* p = (char*)malloc(100);
int* ip;
printf("p = %p\n",p);
ip = (int*)(p+1);
printf("p+1 = %p\n",(p+1));
*ip = 0;
*(ip+1)=0;
free(p);
}



ではコンパイルして実行してみます。
VS2.png

あれ…?アクセスで、できる( ゚д゚;)ヤン
Win2.png


俺の記憶は間違いだったのか?
昔組み込みのヤツやってたとき誤って奇数アドレスに
配置したら吹っ飛んだ記憶があるんだが…。

以下、調べた結果

続きを読む
posted by koteitan at 18:06| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2006年05月10日

予約文字

予約文字「, / ? : @ & = + $ ,」を使うときはエスケープして
おかないとおかしい動作をするモノが多い。
自分のプログラムが大丈夫だからといってもシステムなんてのは
複数のプログラムのコラボレーションなわけで、相手側がそういう
処理を実装しているかを考えなくてはいけない。
そのために結合テストや、インターフェースなどを取り決めるわけなんだが。

有る製品が、URL文字に出力される可能性のある文字列に対して上記の予約文字を出力している。最近のWEBアプリの世界ではそこら中で文字コードの変換が
行われるので、必要ないのであれば、危険な文字は使わない方がいいんだけど…。

URLエンコードに於ける予約文字の扱いについては、下記リンクが詳しいです。
http://www.cresc.co.jp/tech/java/URLencoding/JavaScript_URLEncoding.htm

posted by koteitan at 15:06| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2006年03月23日

gotoは絶対悪か?

プログラムという事に携わっていると必ずある
「goto」の論争。

大抵の言語ではgotoが必要な状況がほとんど無い。
(アセンブラは除く、つか無理)
最近の言語では例外処理もできるので、goto(無条件ジャンプ)
しなくてはならない状況が無いというものだ。
案件によってはコーディングガイド等でgotoが禁止されているものもあるだろう。

gotoは本当に絶対悪なのだろうか?
続きを読む
posted by koteitan at 18:26| Comment(0) | TrackBack(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする