タグ

2013年4月16日のブックマーク (272件)

  • Hudsonプラグインまとめ - wyukawa's diary

    Hudsonには多くのプラグインがあるわけですが、どれをインストールすればいいのかよくわからなかったりします。 ちなみにプラグイン数やダウンロードランキングは以下参照 Hudsonのプラグイン数をグラフ化する - ssogabeの日記 プラグインのダウンロード統計 - 川口耕介のブログ またプラグインの説明が英語しかなく画面キャプチャーも少ないので使い方がいまいちわからなかったりします。 使い方に関しては実際にインストールして試行錯誤するのが早いとは思いますが、 どれをインストールすればいいのかに関しての情報があんまり無いような気がするので独断と偏見で書いてみたいと思います。なおJavaプロジェクトを前提とします。 SCM連携 Subversion使っているならHudsonがデフォルトでサポートしているので何もする必要無し。 CVS, VSSは、、、いってよしっというわけにもいかない状況が

    Hudsonプラグインまとめ - wyukawa's diary
  • Eclipseショートカットキーまとめ - wyukawa's diary

    とりあえずまとめてみました。他にもあるけどよく使いそうなやつを中心に書いてみました。参考になれば。 ■コーディングに便利なショートカット 1.補完(Ctrl + Space) これはもう言うまでも無いですね。ちなみにメソッドを補完する際はキャメルケースの大文字部分で絞込むことができます(補完だけじゃなくて検索も同様)。くわしくはEclipse: キャメルケースの補完奥義 - jfluteの日記。 sysoでSystem.out.println();が、mainでpublic static void main(String[] args) {}が補完されるのは常識。 あとコレクションや配列の変数の後にforeで拡張for文が補完されるのはループに関するつまらないバグを無くせるので積極的に使ったほうがいいと思います。 変数名も補完できます。型がArrayListならarraylist, lis

    Eclipseショートカットキーまとめ - wyukawa's diary
  • スタックトレースの読み方 - wyukawa's diary

    僕もスタックトレースの読み方についてちょっと書いてみる。 例はOracle Technology Network for Java Developers | Oracle Technology Network | Oracleを使う。 1:class MyClass { 2: public static void main (String args) { 3: crunch(null); 4: } 5: static void crunch(int a) { 6: mash(a); 7: } 8: static void mash(int[] b) { 9: System.out.println(b[0]); 10: } 11: } これを実行すると以下のようになる Exception in thread "main" java.lang.NullPointerException at M

    スタックトレースの読み方 - wyukawa's diary
  • SubversionをJavaから扱う方法のメモ - wyukawa's diary

    SubversionをJavaから扱うには以下の3つがあります。 SVNKit(Pure JavaなSubversion実装) JavaHL(JNIベースなSubversionライブラリ) コマンドラインのsvn.exeを外部プロセスとして使う しかしSvnClientAdapterを使えば、これらの違いをあまり意識することなく高レベルなAPIを使うことができます。 SvnClientAdapterのソースは下記にあります。ユーザ名:guest パスワードは空でアクセスできます。 http://subclipse.tigris.org/svn/subclipse/trunk/svnClientAdapter/ ポイントになるのは抽象ファクトリークラスであるSVNClientAdapterFactoryとSVNクライアントを表現するISVNClientAdapterインターフェースです。 A

    SubversionをJavaから扱う方法のメモ - wyukawa's diary
  • EclipseでWebアプリを作っていて別プロジェクトを参照している場合の注意点 - wyukawa's diary

    長いタイトルの割には伝わりづらいw ええと、Webアプリsample-webを作っているんだけど、ユーティリティ関連は別プロジェクトとしてsample-commonに切り出している。 で、sample-webはsample-commonを参照しているという状況です。かなりありがちだと思います。DBアクセスも外だししてバッチとWebで共有したりするでしょう。 sample-common側のソースは下記で package common; public class Greet { public static String greet() { return "hello"; } } sample-web側はこんな感じ。 package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servle

    EclipseでWebアプリを作っていて別プロジェクトを参照している場合の注意点 - wyukawa's diary
  • Java開発におけるフォルダ構成 - wyukawa's diary

    こんな感じでいい気がしてきた。 http://.../svn/sample/ | |--trunk/ | |--tools/ JDK, Ant, Eclipse, Tomcat, DBなどのツール類 | |--doc/ ドキュメント類 | |--sample-project/ 各プロジェクトのビルドスクリプトを呼び出す大元のビルドスクリプト | |--build.properties |--build.xml | |--build-test.properties |--build-test.xml | |--conf/ Eclipseの設定ファイル(epfファイル)などを格納する | |--sample-common/ 共通的に用いられるユーティリティクラスなどの置き場 | |--build.properties |--build.xml |--.classpath |--.project

    Java開発におけるフォルダ構成 - wyukawa's diary
  • ゆとりなJavaプログラマが読むといいかもしれないオープンソースソフトウェア - wyukawa's diary

    Java出来ますって言ってるのにOpenJDKのコードをチェックアウトした事も無いようならモグリである可能性は高い。 一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。 OpenJDKのコードをチェックアウトした事も無いモグリです。こんにちは。 ま、それはともかくw 上記はいいエントリだし参考になります。ただまあモヒカンなのは事実だと思うのでゆとり路線でどういうオープンソースソフトウェアを読むと良いかもしれないって言うのを書いてみたいと思います。かもしれないって書いてるのがすでにゆとりですね。サーセンw JUnit すでに語り尽くされているとは思いますが、これは外せない。 僕自身は下記のJUnit3.8.2を読解する記事を読んでからJUnit3.8.2を読んでみましたね。 Java World (ジャバ・ワールド) 2005年 9月号 出版社/

    ゆとりなJavaプログラマが読むといいかもしれないオープンソースソフトウェア - wyukawa's diary
  • Javaにおける開発インフラまわりのメモ - wyukawa's diary

    Javaで開発する場合に使う可能性があるツール類(おもにインフラまわり)をメモっておきます。テスト関係はあんまりないです。その辺はJavaにおける開発・Test(Unit/Web/負荷)環境のまとめ - よねのはてななどを参考に。 構成管理ツール ツール名 URL 現行バージョン Subversion http://subversion.tigris.org/ 1.6.3 さすがに今やこれは鉄板といってもいいでしょう。 Eclipseプラグインとしては僕はSubclipseを使っています。 Subversiveでもいいんでしょうけど以前試してみて不安定だったのでやめました(不安定だったのは違う原因かもしれないけどw)。 TortoiseSVNも必須ですね。 というのも例えばtrunkの下が以下のようになっている場合Subclipseだとexample-porject/build.xmlが取

    Javaにおける開発インフラまわりのメモ - wyukawa's diary
  • プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記

    まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。 これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった静的な言語は軒並み上位に登場する。これに対し、RubyPythonPHP といったスクリプトは全部下のほう (つまり遅い)。その速度差は非常に大きく、このベンチマークで見ると Python3 や Ruby1.9 は C/C++ の約50倍から60倍遅く、Perl は約90倍、PHP にいたっては約130倍遅いことになる。 (ちなみに JIT つきの Lua が驚異的に高速なのが目をひく。この結果が当だとしたら、言語の速度に大きく関係するのは動的か静的かではなく、どれ

    プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ - kなんとかの日記
  • 典型的な Java屋 は JSP を使うことに何の疑問も持っていない - kwatchの日記

    t_yanoさんのコメントより: 例えばコメント欄に具体例として「たとえばJSPでHTMLエスケープして値を出力するのにわざわざと書くことに疑問を持っている人はどれだけいるでしょうか。私は見たことありません」とか出ていますよね。 で、例えばその「見たことない」例がここにいるわけですよ。私です。いや文字しか見えないでしょうがw 私はJSPなんて死ねばいいのにと公然といってますし、Railsがrhtmlにスクリプトを直接書いてOKなんなら、もうカスタムタグなんて使わないでJSPに直接Javaのコード書いたらいいじゃん、とか公然と言ってますよ。私が一番押している技術はJSP自体使わないですし。 http://d.hatena.ne.jp/kwatch/20080504/1209873687#c1210075670 まあt_yanoさんは問題意識の高い方だから、この方を典型的なJava屋と考えるの

    典型的な Java屋 は JSP を使うことに何の疑問も持っていない - kwatchの日記
  • スクリプト言語の息の根を止めるのは案外 SSD かもな - kwatchの日記

    大変たいへん興味深い記事。全プログラマーにとって。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました ...(snip)... HDDは200スレッドで性能が頭打ちなのに対し、SSDは200スレッドから300スレッドになってもまだ性能は上昇。ただし、300スレッド時にはCPU利用率が100%に近づいており、先にCPU性能の方がボトルネックとなってしまったようです。 HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験 - Publickey 動的なスクリプト言語 (RubyPython など) と静的なコンパイル型言語 (C++Java など) では、だいたい 5 倍から 10 倍ぐらいの速度差がある。それでもスクリ

    スクリプト言語の息の根を止めるのは案外 SSD かもな - kwatchの日記
  • JVM勉強会「わかる!JavaVM ― 2時間でわかる?JavaVM入門」開催しました - ( ꒪⌓꒪) ゆるよろ日記

    無事終わりました。110人もの方に参加していただきました。 参加された皆さん、当に有り難うございました。 わかる!JavaVM ― 2時間でわかる?JavaVM入門 : ATND 編: クラスローダーについて(id:ashigeru)(@ashigeru) http://www.slideshare.net/ashigeru/classloader スタックモデルについて(@skrb) http://www.javainthebox.net/publication/20100806JVMseminar/stackmachine.html バイトコードとJVM命令セットについて(id:kmizushima)(@kmizu) http://www.slideshare.net/kmizushima/java-4912958 GCについて(id:cactusman)(@cactusman)

    JVM勉強会「わかる!JavaVM ― 2時間でわかる?JavaVM入門」開催しました - ( ꒪⌓꒪) ゆるよろ日記
  • JNDIをさらっと振り返る - nekop's blog

    JBoss Advent Calendar 2011の12日目のエントリです。 JNDIはJava EEサーバのEJB、JDBCデータソースやJMSのConnectionFactoryなど、各種サービスにアクセスするためのエントリポイントとなる部分なのですが、あまりエキサイティングな技術ではないので注目されることはないですし、どのようなものなのかを調べたりする機会もなかなかないでしょう。というわけでさらっと振り返ります。 まず基的な機能はリモートアクセスもできるサーバ上のグローバルHashMapみたいなものです。メソッド名がちょっと違い、get()ではなくlookup()、put()ではなくrebind()となっています。 データソースを取得するようなコードはこのようになります。 InitialContext context = new InitialContext(); DataSou

    JNDIをさらっと振り返る - nekop's blog
  • JDBC XAデータソース - nekop's blog

    JBoss Advent Calendar 2011の14日目のエントリです。今日はJDBC XAデータソースの説明。 XAってなによ? ツーフェーズコミット(2相コミット, 2PC)するためのインタフェースです。 XAとか2PCってどんなときに使うの? 一つのトランザクションで2つ以上のトランザクショナルリソース(JDBC JCAリソースアダプタ=データベースとか、JMS JCAリソースアダプタとか)を扱う場合に利用します。 XAとか2PCってなんで必要なの? 例えばデータベースが二つ、DB-AとDB-Bがあって、DB-AからDB-Bにデータを移す処理をするとします。このとき、DB-AからSELECTして削除してDB-Bにインサートする、というようなことをするわけですが、この処理が途中で落ちたら即データ消滅、データ重複などのデータ不整合という結果になってしまいます。XAを使うとこういった

    JDBC XAデータソース - nekop's blog
  • 自分(.class)がどこにいるか調べるサンプルコード - marsのメモ

    意外と簡単で,こんなの. public class Test { public static void main(String[] args) { Test t = new Test(); t.doIt(Test.class.getName()); } public void doIt(String fqcn) { String resourcePath = fqcn.replace('.', '/') + ".class"; URL url = getClassLoader().getResource(resourcePath); String s = url.toExternalForm(); System.out.println("Test.doIt>" + s); } private ClassLoader getClassLoader() { return Thread.curr

    自分(.class)がどこにいるか調べるサンプルコード - marsのメモ
  • 2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style

    http://codemonkeyism.com/generation-java-programming-style/ 次世代Javaプログラミングスタイルだって。ちょっと面白かった。こうゆうスタイルが身に付いたらプログラマのステージがひとつ上がりそうだけど,世間一般に普及させんのは難しいんだろうなとオモタ。 1.Final is your new love. (変数の)final宣言を好めって良く聞くね。気持ちもはわかるけど,徹底するのは大変。 2.No setters. ミューテータ(setter)作んないでコピーコンストラクタ使えと。オブジェクトの普遍性不変性にこだわりますな。 アクセサ(getter)も作んな,って言ってるけど,ちょっと分かんなかった。→ Tell, Don't Ask | The Pragmatic Bookshelf 3.Do not use loops for

    2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style
  • 2007-02-21

    Javadoc→HTML Help変換ツール。 あたしゃ,JavadocはLynxで見てるから別にいらんのだけど,HTML Helpのほうが良いという人向けに使ってみた。なかなか,良い感じに変換される。 デフォのHTML HelpビューアのUIは好きじゃない。他に良いCHMビューアは無いものか。:-( JDKのインスコ場所とか人それぞれで,特に初心者の人たちはインストーラの言うとおりにデフォの場所に入れたり,使いもしないJREをついでに入れたりってのが目に付く。 「デフォで入れて何が悪い」ってことはないんだけど,複数の環境を切り替えたりする場合,ある程度の戦略を持って環境構築したほうが良いと思う。 でも,これって経験則による所があるから,誰かが教えてくんないと,ずーっとデフォのままなんだろうなぁ...。 そんなワケで,前にも書いたけど,参考までに自分の環境を晒すことにした。 ディレクトリ構

    2007-02-21
  • ジェネリクスでタイプセーフなDAOモドキを作ってみた - marsのメモ

    クラス図はこんなの。 Hibernateとか使って,実際にDBに永続化してみればよかったんだけど,そこまで準備ができなかったので,なんちゃってコードで検証だけしてみた。 使い方は,こう。 private static void testCat() { CatDAO dao = new CatDAO(); List<Cat> list = dao.findAll(); for (Cat cat : list) { System.out.println("cat = " + cat); } Cat cat = dao.get(); dao.save(cat); } いちおう思惑通りにはできたんじゃないかと思う。キャスト不要だし,IDEAとNetBeansのコードアシストでも,型変数が期待通りの値になったしね。 恥を忍んでコードを晒すことにする(なんちゃってだから細かいところは気にしちゃイカン)

    ジェネリクスでタイプセーフなDAOモドキを作ってみた - marsのメモ
  • marsのメモ - 開発環境に関わるメモ

    今月で今やってる仕事の契約が切れるので,ここで培ったノウハウなどをメモしておこうと思う。 しかし,今後この手の開発系の仕事ができるとは限らないってのが悲しいところ。 プロジェクトポータルまわり とりあえず,Subversion(SCM), Trac(ITS/Wiki), Hudson(CI)は必須。この3セットがないプロジェクトなんてうんこ。 とにかくTrac-Subversionの連携が強力なので,Subversion以外のSCMは無視していい。HudsonはCIつうよりプロジェクトダッシュボードとして使うのが吉(数あるプラグインを有効利用しよう)。 marsのメモ - Trac marsのメモ - MacroBazaar - The Trac Project marsのメモ - 角谷HTML化計画(2006-04-25) marsのメモ - trac-post-commit-hookが

    marsのメモ - 開発環境に関わるメモ
  • JDBCドライバまとめ - kaisehのブログ

    各種RDBMSのJDBCドライバがダウンロードできるURLと、ドライバのクラス名と、POMのdependency(現時点の最新バージョン)を表にしてみました。Mavenのセントラルリポジトリからドライバが見つからなかった場合は、POMの欄をN/Aにしてあります。 DB / Download URL JDBC Driver Class POM MySQL com.mysql.jdbc.Driver mysql mysql-connector-java 5.1.6 PostgreSQL org.postgresql.Driver postgresql postgresql 8.3-603.jdbc4 SQLite org.sqlite.JDBC N/A HSQLDB org.hsqldb.jdbcDriver hsqldb hsqldb 1.8.0.7 Derby org.apache.der

    JDBCドライバまとめ - kaisehのブログ
  • enum はやれば出来る子なんですよ!! - 宇宙行きたい

    enum ってコンストラクタ持てるの? 持てる。余裕。そして便利 インスタンス制御クラスもシングルトンも enum で http://d.hatena.ne.jp/amachang/20100215/1266245521 ぶっちゃけただのクラスなので、あんまり知られてないけど, コンストラクタどころか任意のインターフェースの実装も出来るし, 自分で抽象メソッド定義して実装する事も出来るよ!! enum Hoge implements Runnable{ FOO("foo"){ @Override public void run() { // 何か処理 } @Override public String getAddress() { return address; } }, BAR("bar"){ @Override public void run() { // 何か処理 } @Overri

    enum はやれば出来る子なんですよ!! - 宇宙行きたい
  • Java の初期化の順番 - 宇宙行きたい

    なんとなく気になったので実験してみた public class Test { static{ System.out.println("---" + Test.class.getName() + " : main の初期化ここから"); } static Hoge hoge = new Hoge(); static{ System.out.println("---" + Test.class.getName() + " : main の初期化ここまで"); } /** * @param args */ public static void main(String[] args) { System.out.println("--- main の処理ここから"); Hoge hoge = new Hoge(); System.out.println("--- main の処理ここまで"); }

    Java の初期化の順番 - 宇宙行きたい
  • logbackで設定を記述する時の注意事項等。続き。 - 設計と実装の狭間で。

    昨日は、どうも古いlogbackを使っていたお陰で、 現状のマニュアルどうりにlogbackが動いてくれなかった訳で。 今度は最新版使うよ。 slf4j-api-1.5.6.jar logback-core-0.9.15.jar logback-classic-0.9.15.jar 随分バージョンアップしてるね。 昨日と全く同じ設定ファイルを書くんじゃ、アンマリなんで、 今度はもう少し手の込んだ設定ファイルにしてみるよ。 今日は設定用のXMLファイルを2用意しる。 logback.xml <configuration> <include resource="appenders.xml"/> <logger name="aa.bb.cc" additivity="false" level="INFO"> <appender-ref ref="STDOUT4" /> </logger> <l

    logbackで設定を記述する時の注意事項等。続き。 - 設計と実装の狭間で。
  • logbackで設定を記述する時の注意事項等。 - 設計と実装の狭間で。

    slf4j可愛いよ、SLF4J。と言う訳で、logbackを使う訳だ。 でも、何かようワカランけど、ちゃんとログが出ない事があったりなかったり。 と言うか、出ない事は少ないんだけど、出過ぎる事がある。 使ってるのは、 slf4j-api-1.4.2.jar logback-classic-0.9.9.jar logback-core-0.9.9.jar で、logback.xmlを記述しちる訳だす。 より新しいバージョンで設定を記述する際のポイントを logbackで設定を記述する時の注意事項等。続き。 に書いているます。 以下の内容には、相応に不適切な内容を含んでいるます。 で、こんなコードを書く訳。 public class Main { public static void main(String[] args) { Logger bb = LoggerFactory.getLogg

    logbackで設定を記述する時の注意事項等。 - 設計と実装の狭間で。
  • 超簡単なテンプレートエンジンをJavaScriptで実装する。 - 設計と実装の狭間で。

    話題としては、まぁ、何かどこにでも転がってる感じなのだろうけど、 余りに簡単に出来たので、自分用にメモ書き。 function emit(template,map) { return template.replace(/\$\{[^\$\{\}]*\}/g,function(key) { var v = map[key.substring(2,key.length-1)]; return v ? v : ''; }); } 使い方はこんな感じ。 ${パラメータ名}がプレースフォルダになっていて、 そのパラメータ名で、二番目の引数のmapから値を取り出して置換する。 var tmplt = "<div>hoge ${hoge}&nbsp;${fuga}</div>"; var newone = emit(tmplt,parseParams()); console.log(newone); f

    超簡単なテンプレートエンジンをJavaScriptで実装する。 - 設計と実装の狭間で。
  • Winstoneを使ってみる。 - 設計と実装の狭間で。

    噂によると起動が爆速らしい。 そして、ライブラリのサイズが超小さいらしい。 とりあえず、winstone-0.9.6.jarをダウンロード。 んで、めぼしいWebアプリが思いつかないので、teeda-html-exmapleを使う事に。 SVNからチェックアウトしてきて、webappフォルダをテキトーなフォルダにコピーしる。 今回は、JSPも使いたいので、Tomcatのcommon/libから必要なライブラリをコピーしてくる。 ディレクトリはこんな感じに。 winstone lib commons-el.jar commons-logging-api.jar jasper-compiler-jdt.jar jasper-compiler.jar jasper-runtime.jar jsp-api.jar webapp startup.cmd(起動スクリプト) winstone-0.9.6

    Winstoneを使ってみる。 - 設計と実装の狭間で。
  • java.util.ServiceLoaderを使う。 - 設計と実装の狭間で。

    DIコンテナやらOSGiやら使う程でもないけど、最低限の拡張性はとりあえず担保しておきたいので使う感じなのだけど、コアAPIに含まれているjava.util.ServiceLoaderは当に使い辛い。 というか、そのままでは使えないのでユーティリティ的でいつも似てるけどちょっと違うコードをそこら中に書き散らす訳で。 まずは、javadocをちゃんと読んでクダサシ。 java.util.ServiceLoader<S> 作成するリソースは、最低4つ。ファイルの配置はこんな感じ。 実装を切り替える為のインターフェース package conf; /** * @author taichi */ public interface Service { String getName(); void execute(String parameter); } 定義したインターフェースのデフォルト実装 p

    java.util.ServiceLoaderを使う。 - 設計と実装の狭間で。
  • java.util.concurrent.ScheduledExecutorService - 設計と実装の狭間で。

    何かそれなりに重い処理が色々あったとする。バッチ的なアレとか。 で、処理は大体がアトミックで、スレッドプールを使って、それぞれを処理する事で、処理効率を稼ぎたい時に使うAPIJavadocを見てても良く分からんくて、ハマったので、実装例をばメモ。 このコードの内容は、 処理は重くていつ終わるか分からない上に、処理中に更に新しいタスクを積んでしまうので、 全体として、当にいつ終わるか分からないので、 プロセスを起動した後、一定の時間が経過したら、それ以上タスクを積めない様にしつつ、 プロセスを綺麗に終了する。という感じ。 import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; pub

    java.util.concurrent.ScheduledExecutorService - 設計と実装の狭間で。
  • デバッグ方法論 - 設計と実装の狭間で。

    吉岡さんが釣り糸を垂れているので、釣られてみるよ。 デバッグ方法論 と言っても、多分、僕の気力が続くのは、こんなトピックがあるよ、って事までかな。 細かい話が気になるって人達は、スターとか、ブクマとかで催促すると、 書く気になるかもしれないし、どっかの宴会で、続き喋れって言われれば喋るかもしれない。 前提として、Javaで書かれたコードをデバッグすると考えてクダサシ。 ある程度実行環境やコードの種類に依存しないデバッグの方法論ってのもあるんだろうけど、 僕が気付かないウチに、Javaに強く依存したデバッグの方法論を抱え込んでるって事もあるだし。 まず、デバッグと言う作業が、どの様な構造を持っていると、僕が理解しているか、書いてみる。 バグの定義 静的デバッグ 動的デバッグ フォースを感じる この4つだに。 ちなみに、コードを修正する事は、デバッグでは無いものとするよ。 それぞれは、作業手順

    デバッグ方法論 - 設計と実装の狭間で。
  • WebアプリケーションにおけるHttpSessionのアレとかソレ。 - 設計と実装の狭間で。

    僕が、HttpSessionをやたらと使うテクノロジに懐疑的な理由をちょっとだけ。 実装上の話と設計上の話に分けて考えてみたり。 まずは、「JavaにおけるHttpSession」が、アレでナニな理由。 HttpSessionが、どの様に保持されるかは、APサーバの実装依存。 つまり、どういう事かというと、HttpRequestのたんびに、どっかにシリアライズしてもイイのです。 大抵のAPサーバは、HttpSessionの内容を常に全てメモリ上に保持する訳ではありません。 好き勝手なと言うと、語弊がありますが、ある程度のタイミングでシリアライズします。 それによって、使用されるメモリの量を抑える様になっています。 これが、適切に動作するか否かは、状況依存なので、 決定的な事は何とも言えないのですが、ポイントは、一つだけ。 HttpSessionにオブジェクトが大量にぶら下っていると、 シリ

    WebアプリケーションにおけるHttpSessionのアレとかソレ。 - 設計と実装の狭間で。
  • コードの最低品質を底上げする為のルール的なアレ。 - 設計と実装の狭間で。

    何となくまぁ、話題になったので、とりあえず書いておくます。 ルールなのだけど、常に例外的状況は存在しるます。 その例外的状況を適切に把握しているのであれば、どの様にコード書いても良いです。 自分の中で一定のルールを持ってコーディングすると、 そもそも自分がミスをし易いパターンを把握し易いのと、 自分のコードの最低品質がある程度担保されるので、良いかな…と思うマス。 要は、みんな俺様ルールを作って、 それをある程度意識しながらコーディングすれば良いと思うよ、って話。 考え方の基。 自分の能力が最も発揮されない状況を想定する事。 疲れている、やる気ない、気になる事が他にある、等々… 頭を使う時間は計測するのが難しいが、タイピングしている時間は、ある程度簡単に計測可能である事。 「考えている時間」は、貴重なリソースだけど、見積もりが難しいのだよねぇ…。すごく。 この位の時間考えれば答えが出る筈

    コードの最低品質を底上げする為のルール的なアレ。 - 設計と実装の狭間で。
  • シェルにおけるタブと改行の扱い - ザリガニが見ていた...。

    最近はradikoやらじる★らじるのタイマー録音絡みで、シェルスクリプトを触る機会が多かったのだが、 再びradikoで録音したい! - ザリガニが見ていた...。 予約日時になったらちゃんと目覚めるtimerコマンドが欲しい - ザリガニが見ていた...。 radikoをキーワードで予約する - ザリガニが見ていた...。 自分の思いどおりに動作する時とうまく動かない時の原因は、そのほとんどが、スペース・タブ・改行を扱う時の勘違いにあると感じてしまった...。その扱いを正確に理解していれば、シェルスクリプトはかなり高度なテキスト処理を最初から的確にこなしてくれるはずだ。シェルスクリプトを理解するポイントの1つは、これらの目に見えない文字を、頭の中で正確に思い描く想像力かもしれない。現状の理解をメモしてみた。 検証環境 MacBook Pro Retina15 OSX 10.8.2 bas

    シェルにおけるタブと改行の扱い - ザリガニが見ていた...。
  • ファイルの属性情報を探る 時刻編 - ザリガニが見ていた...。

    ファイルの属性情報とは、そのファイルの内容以外に、そのファイルに関連付けられた情報すべてである。例えば、「hello」と書いて保存すると(ファイル名は「sample.txt」で保存)、「hello」以外の関連付けられたすべての情報は、属性情報である。 $ echo -n hello > sample.txt アイコン ファイル名「sample.txt」 コメント 種類:標準テキスト書類 サイズ:5 バイト(ディスク上の 4 KB) 場所 作成日:今日 10:26 変更日:今日 10:26 ラベル ひな形の状態 ロックの状態 アクセス権限 以上、Finderの情報を見る(command-I)から確認しただけでも、少なくとも上記の情報は見える。たった5文字の「hello」にも、上記の情報が付加されるのだ。 さらに、属性情報はこれだけではない。Finderからは見えない、さらに多くの情報が付加さ

    ファイルの属性情報を探る 時刻編 - ザリガニが見ていた...。
  • ファイルの属性情報を探る 権限編 - ザリガニが見ていた...。

    前回からの続き。 ファイルの属性情報を探る 時刻編 - ザリガニが見ていた...。 伝統的なUNIXのアクセス権限 伝統的なUNIXでは、すべてのファイルやディレクトリにアクセス権限が設定されている。 ここで言うアクセス権限とは、読み・書き・実行を許可するか、しないかの選択である。 但し、ディレクトリの場合はちょっと意味合いが違ってくる。 読み = ls可能かどうか(許可されていなくても、その中のファイルやディレクトリをパス指定したcatやlsならできる) 書き = 新規追加・削除可能かどうか(許可されていなくても、修正はできる。子以下のディレクトリに対する新規追加・削除はできる) 実行 = そのディレクトリ以下にアクセス可能かどうか(許可されていないと、すべての操作が禁止される) 以上のアクセス権限を、所有者・グループ・その他のユーザーに区分して、それぞれ設定するのである。 アクセス権限

    ファイルの属性情報を探る 権限編 - ザリガニが見ていた...。
  • 無慈悲なshellから自分を救う工夫(というかクセ) - auientの日常

    私みたいなおっちょこちょいを自滅から救って来たちょいとした工夫x3+1 http://blog.livedoor.jp/dankogai/archives/51863725.html 2番目のnoclobberは知らなかったので参考になったけれど、その他の点でツッコミ・思うところがあったので書いてみる。 alias rm='rm -i'はrm -fを救えない 上記の例は、実はこれだけで防ぐことが出来ていた。 tcsh alias rm 'rm -i' bash alias rm='rm -i' rmやmvに設定することの多いaliasですが、これは間違い。-iと-fオプションは後に指定された方が有効になるので、alias rm="rm -i"としていてもrm -rfを救うことはできません。試してみましょう。 $ alias | grep rm alias rm='rm -i' $ mkdi

    無慈悲なshellから自分を救う工夫(というかクセ) - auientの日常
  • シェルスクリプトの実行・管理が楽になるRerunの紹介 - Qiita

    普段使っているシェルスクリプトの数が増えてきて、うまく管理できるツール無いかなーと思っていたところにRerunというのを見つけたので紹介してみます。 Rerunって? Rerun by rerun Rerun is a simple command runner that turns loose shell scripts into modular automation. rerunは複数のスクリプトをモジュールとして取りまとめ、スクリプトの管理と呼び出しをサポートしてくれるツールです。 実際に導入しながらどんなものか見ていきます。 インストール Installation · rerun/rerun Wiki を参考に。

    シェルスクリプトの実行・管理が楽になるRerunの紹介 - Qiita
  • 便利なGit Tools

    自分はあんまり使わない zshの設定に直接書いてしまう logはSourceTreeで見たり、コミット等はIDEから直接やる事多い git cancel は結構使うのでaliasに入れてる git reset --hard HEAD を安全にした - 永遠に未完成

  • 正規化を使いたくても - yanok.net

    あるときJavaプログラムで、入力されたテキストデータに含まれる所謂「全角・半角」の区別を無視したいことがありました。例えば「RAM」という言葉が含まれていたら、所謂「全角」であろうが「半角」であろうがそれは同じ文字なので、重複符号化のせいにすぎないそういう非質的な区別は無視したいわけです。 当ならこれぞまさに正規化処理の出番で、JavaではUnicode正規化が簡単に使えるようになっているのですが、しかしUnicodeの正規化仕様はちょっと使いづらいところがある。 というのは、通常の正規化形式であるNFC, NFDはいずれも、「全角・半角」の区別をそろえてくれないので私の目的の役には立たない。一方、NFKC, NFKDはというと、「全角・半角」をそろえてくれるのはいいのだけど、三点リーダがピリオド3つになってしまうとか、記号類について余計なお節介をしてくれて何がどうなるのか正直私も覚

  • pixivのデータストア/キャッシュ戦略 その2 - pixiv engineering blog

    先月末にwww.pixiv.netのバージョン管理をSubversionからGitに移行できてホッとしているインフラ兼ソフトウェアエンジニアのbokkoです。 pixivのSubversionリポジトリには\( ^ o ^ )/ディレクトリなるものが存在していて、開発が終了したプロジェクトやもう使われなくなったソースコードはremoveされるのではなく、 この\( ^ o ^ )/ディレクトリにmoveされます。 www.pixiv.netもGitに移行した後、{trunk,branches,tags}のすべてを\( ^ o ^ )/へmoveしましたが、あまりにも巨大過ぎて「svn move -> commit」が完了するのに1時間半かかりました。おそらく僕の人生の中で最も時間のかかったコミットとして全僕の中で語り継がれるのではないかと思います。 最近は弊社でも「最初に触れたバージョン管

  • memcachedからKyotoTycoonへ

    Editor's Notes\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n

    memcachedからKyotoTycoonへ
  • Memcache

  • pixivのデータストア/キャッシュ戦略 その1 - pixiv engineering blog

    Zoff PCのカラータイプ眼鏡を愛用しているインフラ兼ソフトウェアエンジニアのbokkoです。 夏休みは山登り -> 温泉で悠々自適に過ごしてましたが、休み明けから筋肉痛で体のあちこちが痛いです(><)。 今回はpixivで活用しているデータストアやその周辺ミドルウェアの話を3回くらいに分けてしようと思います。 pixivを支えるデータストア pixivでは主に以下の2つをデータストアとして活用しています。 MySQL KyotoTycoon MySQL pixivではユーザやイラスト、ブックマーク、あるいはそれらに関連した情報といったサービスの根幹に関わるデータはMySQLに保存しています。 これはMySQLの高い信頼性のほかに、ピクシブ社内でMySQLの運用に関するノウハウが蓄積されていたり、自作の運用ツール群が充実しているというのが大きな理由です。 KyotoTycoon Kyot

  • アクセス解析システムの裏側 (公開用)

    Seminar report (Building a Linux server and AWS SDK for Ruby)Tamotsu Furuya

    アクセス解析システムの裏側 (公開用)
  • 平均レスポンスタイム50msをPerlで捌く中規模サービスの実装/運用

    5. 広告の目的? • 広告が成立する条件 • “出す”場所がある • “見る”人がいる • ”出稿”したい誰かがいる • 広告枠 : オーディエンス : 広告主

    平均レスポンスタイム50msをPerlで捌く中規模サービスの実装/運用
  • OSSのJobSchedulerを使ってジョブ管理 - Tech-Sketch

    皆さん、Job管理はどのように行なっていますか? 簡単なものであればcronで実行している方も多いかと思います。 ジョブ同士に関連を持たせたりと複雑な管理をする場合には JP1 、 A-AUTO 、 Tivoli 等の商用ツールを利用する場面もあります。 OSSのジョブ管理ツールとしては Hinemos が有名ではないでしょうか。 今回紹介するのは、OSSで、かつ非常に多機能なジョブ管理ツールである「 JobScheduler 」です。 JobSchedulerは、ドイツの企業である「 Software-und Organisations-Service GmbH (以降、SOS社とする)」が開発を行なっています。 JobSchedulerは非常に有用な機能を多く含んでおり、 また、ヨーロッパを中心に非常に多くの利用実績があります。 金融機関のシステムなど、ミッション・クリティカ

  • クラウドが実現するソフト開発・運用の変革と自動化

    1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術NTT Tech Conference ...NTT DATA Technology & Innovation

    クラウドが実現するソフト開発・運用の変革と自動化
  • .NET Architecture Center: The Architecture Strategy Series

    Thank you for joining us at Microsoft’s Strategic Architect Forum 2015 Session videos and presentations are now available online See sessions, presentations and additional relevant content here Architecture blueprintsScenario-based diagrams that help you build new solutions fastWatch the videoTransform technology to an asset to grow your business and your career<iframe width="980" height="550" all

    .NET Architecture Center: The Architecture Strategy Series
  • Red-Green-Refactor - やっとむでぽん

    よく「ほんとに最初にRedにするんですか?毎回必ず絶対に?」と聞かれます。ひとことで答えるなら、 すみませんたまに飛ばしちゃいます 三ことぐらいですかね。だけど、ほとんど毎回Redを経由するようにしているのも、当です。 なぜ最初にRedにするのか。理由はわりとくだらなくて、書いたテストがちゃんと実行されないと困るからです。JUnitなら@Testアノテーションを忘れるとか、Pythonならテストメソッド名を重複させて上書きしてしまっているとか。昔々はTestSuiteに追加し忘れとかもあったな。実は最近のツール群であればもうそんなこと起きないのかもしれませんが、昔はよくはまった(ほんとによくはまったなあ)ので、自分の規律として(ないし条件付けられて?)まずはRedを見るようにしています。 Redが必要な理由はこれだけでも十分なんですが、他にもメリットはあると感じます。Redにせず最初から

    Red-Green-Refactor - やっとむでぽん
  • テストをリファクタリングするとき気をつけること - やっとむでぽん

    TDDのサイクルはRed-Green-Refactoringです。このリファクタリングは、プロダクトコードはもちろんですが、テストにも適用されます。しかしテストのリファクタリングには、プロダクトコードのリファクタリングと違うところもあります。 プロダクトコードのリファクタリングは、一言で言えば後で変更するときのためにやるものです。プロダクトコードを変更するのは、機能追加や変更、問題の修正のためです。つまり、将来プロダクトコードの価値を高めるためにリファクタリングをします。 テストのリファクタリングも、もちろん変更のためですが、テストコードの変更はプロダクトコードの変更に追随して発生します。テスト内容を変更するためにテストコードを直すことは稀です。したがって、プロダクトコードを変更しやすくするために、テストをリファクタリングする。 通常の(つまりプロダクトコードの)リファクタリングは、まさに

    テストをリファクタリングするとき気をつけること - やっとむでぽん
  • DBMSの世界はもうとっくに変革の嵐 | 独り言v6

    DBの世界に起こる変革 を見てびっくりするほどがっかりした。DBMSの世界はこれから変革が起こるどころが、もうすでに変革ががんがんに起こっていて、One Size Does Not Fit Allの時代だと言われて久しい。Oracle RDBMSだけの世界とかを見ていると、その変化が見えなくなってしまうことが多いだろう。しかしちょっとRDBMSを離れたら、現在はDBMS戦国時代であり、Oracle社もその有力なプレイヤーの一人である。 とりあえず現状を知りたいと思ったら、以下が非常に参考になる。 NoSQLの現状 50以上のソフトウェアがひしめく市場、これを戦国時代と言わずしてなんだろうか。MongoDBあり、Hadoopあり、KVSあり、NewSQLあり・・・これが21世紀のDBMSの現状だ。 ちなみに先のサイトで話にあった「ジャーナルを書かないRDBMS」というのはつまりLog Str

  • NTTデータによるDell ITサービス事業統合の影響

    生成AIを使用すべきでないケースとは? 自社の組織のニーズや具体的なユースケースに照らし合わせて、適切なAI技術を選択する重要性

    NTTデータによるDell ITサービス事業統合の影響
  • Application Architecture for Enterprise Win Store Apps with DDD Pattern

    Application Architecture for Enterprise Win Store Apps with DDD Pattern

    Application Architecture for Enterprise Win Store Apps with DDD Pattern
  • AndroidのNFC機能でFeliCaの読み書きをする | −ゆめログ− | ゆめみスタッフブログ

  • AndroidのNFC機能でFeliCaの読み書きをする | −ゆめログ− | ゆめみスタッフブログ

  • AndroidのNFC機能でFeliCaの読み書きをする | −ゆめログ− | ゆめみスタッフブログ

  • オープンソース法

    オープンソース法 オープンソース・ソフトウェアにかかわる法律問題について、この分野の第一人者である弁護士(ローレンス・ローゼン氏)が初歩の初歩から応用まで分かりやすく解説した「オープンソース・ライセンス」というの翻訳を掲載しています。 ・このブログでは、オープンソース・ソフトウェアにかかわる法律問題について、この分野の第一人者である弁護士(ローレンス・ローゼン氏)が初歩の初歩から応用まで分かりやすく解説した「オープンソース・ライセンス」(原題:Open Source Licensing - Software Freedom and Intellectual Property Law)という書籍の翻訳案を掲載しています(なお、原文はhttp://rosenlaw.com/oslbook.htmにて公開されています。)。 ・オープンソース法をじっくり学びたい方は、古いエントリーから順にお読み

  • つくって学ぶプログラミング言語 RubyによるScheme処理系の実装

    プログラミングをより深く理解するための近道は、プログラミング言語を実装してみること。SchemeのサブセットをRubyで実装していくことで、プログラムはどう実行されるのか、その基がはっきり分かります。 ※書はCC BYにより配布されています。上記の「買い物かごへ」ボタンからは有償で購入できます。無料で入手したい場合は、下記リンクよりダウンロードしてください。なお、有償版も無償版も内容は同一です。 EPUB版PDF版内容紹介プログラムは書けても、その基礎となっている計算機科学(コンピュータサイエンス) の理解があやふやな人を、著者は多く見てきました。プログラミングに自信があるという人が、もう一歩先に進める道を示したいというのが、この文書を書き始めた動機です。 この文書を読むことで次の効果が得られることを期待しています。 プログラミング言語とは何かを深く理解することで、プログラミングのレベ

    つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
  • https://github.com/yukitos/notes/blob/master/tenreasons/index.md

    https://github.com/yukitos/notes/blob/master/tenreasons/index.md
  • [お悔やみ]Struts1.xが逝去されました | DevelopersIO

    ここで発表されているように、Struts 1.xは耐用年数の終わりに達しており、 今後サポートされないことが発表されました。 そこで今回は、Strutsのこれまでの功績と、私との思い出について振り返ってみます。 Strutsの功績 Javaのスクリプトレット、Javascriptコード、HTMLタグの入り混じったカオスなJSP、 入力チェックからビジネスロジックまですべてごちゃまぜに書かれた巨大なServlet、 同じようなコードを繰り返しかかなければならず、一度仕様変更がおこればいろんな箇所を修正しなければいけない効率の悪さ。 こういった問題は、Strutsを正しく使用することによって解決されました。 もちろん、POJOを使えず、ActionFormを継承しなければならない等の問題もありましたが、 Strutsは今日のMVCフレームワークの礎となっていると思います。 Strutsとの思い

  • 西鉄ストアの本部基幹システム、AWS のクラウドサービス上に全面移行 | スラド IT

    福岡県・佐賀県にスーパーマーケット 56 店舗などを運営する西鉄ストアが、その部基幹システムを刷新、Amazon Web Services (AWS) を使ったクラウド上で動作するシステムに移行したという (クラウド Watch の記事、ノーチラス・テクノロジーズのプレスリリースより) 。 稼働しているシステムは「売上・売掛金管理システム」「仕入・買掛管理システム」「テナント管理システム」「管理会計システム」という、どれも停止すると大きな影響のあるシステム。関係者がこれについて紹介しているが、バッチ処理はすべて Hadoop で処理しており、Hadoop クラスターの運用面でのトラブルやパフォーマンス問題を解決するために AWS を採用したという。いっぽう、AWS を利用することでコストパフォーマンスが少なくとも半分以下で 2倍以上になり、またクラウドを利用することによる運用負荷の軽減、

  • LinkedIn の開発で使用されている開発手法「continuous deployment」 | スラド デベロッパー

    米大手 SNS「LinkedIn」では、continuous deployment と呼ばれる開発手法が採用されているらしい。それぞれの開発者が一定量のコードを書くと、自動的にテストが実行され、テストをパスすると trunk にマージされる仕組みになっているそうだ (WIRED.jp の記事、家 Wired.com 記事より) 。 継続的インテグレーションと何が違うんだと思って原文をチェックしたのだが、明解な答えは見つからなかった。ただ、LinkedIn は以前は複数のブランチに分けて開発を行い、数日もしくは数週間単位で trunk にマージしていくという方式だったそうで、マージ時に発生する問題を避けるために同時に開発する機能に制限を加えざるを得なくなり、開発が停滞していたそうだ。continuous deployment の採用によりこのような問題が解決され、開発速度が一気に向上したと

  • リアルタイムWebを構築しやすくする「Socket.IO」とは

    連載では、このTech-Sketchから「コレは!」というテーマをピックアップし、加筆修正して皆様にお届けいたします。 リアルタイムWebとSocket.IO 栄えある連載第1回は、リアルタイムWebとSocket.IOについてお届けいたします。Tech-Sketchに掲載した元ネタはこちらです。 JavaScriptとDynamic HTMLによる「動的に表示内容が更新されるWebサイト」は、JavaScript内から非同期にサーバへ接続しデータを取得する技術、いわゆるAjaxが利用できるようになったことを皮切りに、爆発的に広がりました。Google Mapsなどがその代表例です。 このGoogle Mapsは、表示する場所や縮尺を変更するといった「利用者の操作」を契機として新しいデータをサーバへ取りに行く仕組みになっています。そのためサーバ側でデータが変更されたとしても、次にデータを

    リアルタイムWebを構築しやすくする「Socket.IO」とは
  • 書いたもの

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    書いたもの
  • 4 月にエンジニアとなった人たちに知っておいてもらいたいこと

    個人的な経験を書きますが、ぼくはエンジニア生活 10 数年で 5 社を転職して渡り歩いています。そして、その 5 社すべてでなにかしらの勉強会なり研修なりといったものをやってきました。 そして、それが仕事であろうとなんだろうと自分がエンジニアに研修なり説明会なりをするときは、自分がもらったものを返すつもりでやってきました。そのときそのときは当然所属している会社があるわけですが、その会社のため (だけ) にやったことは一度もありません。プロジェクトによって参加している人の立場も発注元だったり受託開発の常駐エンジニアだったり様々だったので、あくまで一人のエンジニア同士として自分が伝えられることをなるべく伝わるような言い方で伝えるということをやってきました。その中では所属会社へ都合の悪い話も出たりしますが、これは所属会社へのコミットメントとは別の話です (PHP 使ってる会社で PHP の悪い点

    4 月にエンジニアとなった人たちに知っておいてもらいたいこと
  • Sencha Advent Calendar 2012 まとめ | kawanoshinobu.com

    Sencha Advent Calendar 2012 の25日目の記事です。 メリークリスマス!皆様、今宵はいかがお過ごしでしょうか?私は、昨日から39度の熱が続いており、寒さに震えながら、このエントリを書いています.. ^^; 完走はありえない、と思われた Sencha Advent Calendar 2012 ですが、いろいろな方のご協力で綱渡りが続き、なんとか最終日まで辿り着きました。お忙しいところ、当にありがとうございました! 最終日の今日は、Sencha Advent Calendar 2012 のこれまでを振り返り、締めとさせて頂きます。 1日目: Sencha Touch Tutorial: メモ帳アプリを作る #1 – @kawanoshinobu 完走するためには、何度も書くことになると思い、シリーズもののエントリを始めました。第1回は、開発環境の準備を行いました。

  • jQueryをはじめよう(初心者へ・サンプルから学ぶ) | ペンクおじさんのエンジニアブログ|株式会社penq [ペンク] / Penq Inc.

  • Amazon Web Service(AWS)の紹介 | ペンクおじさんのエンジニアブログ|株式会社penq [ペンク] / Penq Inc.

  • 高機能なHTML5お絵かきツールを実装できるjQueryプラグイン「jquery.deviantartmuro」:phpspot開発日誌

    jquery.deviantartmuro by deviantART 高機能なHTML5お絵かきツールを実装できるjQueryプラグイン「jquery.deviantartmuro」 レイヤー機能、フィルタ機能の他、様々な機能が実装されており、1つのアプリケーションのような画像編集ツールを実装できます HTML5ベースではいまだかつてない程の高機能っぷりかもしれません。 サイトにお絵かき機能を実装したくなったら参考にしてみましょう 関連エントリ オープンソースのHTML5お絵かきウィジェット「Literally Canvas」 Canvasベースのお絵かきが実装できるjQueryプラグイン「Sketch.js」 お手軽にお絵かきアプリが作れるjQueryプラグイン「wPaint」

  • はじめてのNode.js:Node.jsアプリケーションのデバッグ | OSDN Magazine

    記事は、3月13日にソフトバンク クリエイティブより発売された書籍「はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-」から、「第7章 Node.jsアプリケーションのデバッグ方法」の一部を抜き出し再構成したものです。 出版社ページ / Amazon.co.jpの商品ページ 大型: 384ページ、価格:3,045円(税込)、ISBN: 978-4797370904 Node.js組み込みのデバッガを使う nodeコマンドには、CUIで操作できるデバッグ機能が組み込まれている。実行中のコードを表示したり、変数や関数の戻り値を表示する、といったシンプルな機能のみを持つデバッガであるが、別途ツールなどをインストールすることなしに手軽にプログラムの実行状況を確認できる。 デバッグ機能を使うには、node debugコマンドを使用する。 $ node deb

    はじめてのNode.js:Node.jsアプリケーションのデバッグ | OSDN Magazine
  • 軽量で便利に使えるPHP用DB操作ライブラリ「Medoo」:phpspot開発日誌

    Medoo - The Lightest PHP database framework to accelerate development 軽量で便利に使えるPHPDB操作ライブラリ「Medoo」 SQLを書かなくてもメソッドでselect, insert, delete, update 等ができてコードも読みやすくなるライブラリです。 使うには1ファイルをincludeするだけでつかえます コード例。SQLをかかなくてすみ、インジェクション対策機能もあるらしいです 軽量かつ1ファイルなので簡単に導入できるので、ちょっとDBを使おうっていう場合に、MDB2等を使いたくない人は使ってみても良いかも 関連エントリ レイヤー機能による画像合成機能やサムネイル生成等が超簡単に行えるPHPライブラリ「PHPImageWorkshop」 Google,Facebook,Twitter,Tumblr等

  • IT news, careers, business technology, reviews

    The rise of synthetic media: Get ready for AI avatars at work

    IT news, careers, business technology, reviews
  • あなたがVimを使うべき5つの理由 - nigoblog

    今回はVimの魅力と、それを使うべき理由について書いていきます。 はっきりいうと、 Vimは絶対に使えるようになるべき! その5つの理由はこちら コーディング速度が変わる コマンドラインへの抵抗がなくなる Railsやnodejsなどのフレームワークと相性がいい Gitとも相性がいい 自分好みのエディタが使える というわけで早速一番目から見てみましょう! コーディング速度が変わる Codaなどのエディタを使っていた場合劇的に変わると思います。 どこで変わるかというと、 マウス操作の部分で変わる! まぁCodaでもマウスを使わずに出来ることは出来るのですが、 Vim程ではない、というより Vimは一切マウスが使えない! なので強制的にキーボードだけの操作になるため、 キーボードからマウスに手を移動させる時間がなくなる。 そのため、Vimの方が早くなります。 なのでVimを使いましょう! コマ

    あなたがVimを使うべき5つの理由 - nigoblog
  • Chef Casual Talks Vol.1 で 初 LT してきた一部始終 - ようへいの日々精進

    要件 Chef Casual Talks Vol.1 で chef に携わっている人、これから携わっている人達の話を聞いて三ツ星 chef を目指せ ついでに自分も喋ってみる いきなりまとめ とにかく濃かった!!!!!!!!!!!!!!!!!!! インフラエンジニアよりも開発側の人が多くてびっくり...と同時にインフラエンジニアも頑張らんといかんなと思った次第 Chef Server も触る必要があるなと思った次第 EngineYard さんのステッカーを沢山もらって嬉しかった ビールを二飲んだ 内容 以下、 Evernote に箇条書きした内容をちょっと整理した。 最近、Vagrantが楽しいのでその辺りを。 vagrant でしょ chef めちゃくちゃ盛り上がっているよね。 ベストプラクティスがわかんない 孤独のシェフ、コードレビューとかもやらない EngineYard では第3月

    Chef Casual Talks Vol.1 で 初 LT してきた一部始終 - ようへいの日々精進
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • 最新ソースコードを入手できる Git

    「Git」はLinuxカーネルソースの管理などに使われている分散バージョン管理システムだ。多くのオープンソースソフトの開発に利用されている。ローカルにも変更履歴を管理しているため、効率の良い共同開発が可能だ。 バージョン管理システムは、複数の開発者でプログラムを作成する場合などに、ソースコード群の変更履歴を管理するソフトウエアだ。商用やフリーを問わず様々なソフトウエアの開発に使われている。 Linuxディストリビューションの中核となる「Linuxカーネル」の開発には、かつて「BitKeeper」と呼ばれる商用のバージョン管理システムが使われていた。このBitKeeperが無償で利用できなくなり、Linuxの生みの親であるLinus Torvalds氏によってその代わりとなる「Git」が開発された。現在、そのメンテナンスは濱野 純氏が担当している。 Gitは、分散型のバージョン管理システムだ

    最新ソースコードを入手できる Git
  • アジャイルってなんなんだ!?

    企画はWeb開発企業『クレイ』におけるアジャイルソフトウェア開発の経験を漫画「ブラックジャックによろしく」の名シーンを挿絵に紹介するドキュメンタリーです。 はじめまして、認定スクラムマスターの吉岡と申します。私は2011年にWeb開発企業『クレイ』に入社して以来、開発プロセスの改善に取り組んできました。クレイはエンジニア5人とプロジェクトマネージャ2人でWeb開発を請け負っており、プロジェクトの規模としては2~3カ月で完了する短いものが主流でした。 入社当時はエンジニアそれぞれのToDo管理はしていたものの、要件の解釈で行き違いがあったり、担当者以外に開発の状況が見えないなどの問題がありました。

    アジャイルってなんなんだ!?
  • Grunt 日本語リファレンス | js STUDIO

    このサイトについて Gruntの日語リファレンスです。 Gruntの家サイト(英文) の内容を翻訳して作成していますが、誤訳や誤記があると思いますのでその点についてはご了承ください。 もし、誤訳などの間違いを見つけましたら、 @tomof まで教えていただければ幸いです。 News 2013.04.15 サイトをオープンしました。 概要 何故タスクランナーを使うのか? 一言で言えば、自動化のためです。 ファイル圧縮、コンパイル、単体テスト、Lintなどの繰り返し実行しなければいけないタスクを自動化することで、仕事を楽にしてくれます。 タスクランナーを設定すれば、こういった冗長的なほとんどの仕事を、あなたやチームのために行なってくれます。 何故Gruntなのか? Gruntエコシステムは、巨大で日々成長しています。 Gruntを使って文字通り何百ものプラグインから選択し、最小限の努力で自

  • プログラミングが学べる「Codecademy」を実際にやってみた【日本語にも対応】

    プログラミングが学べる「Codecademy」を実際にやってみた【日語にも対応】 日語に一部対応している、プログラミング学習サービス「Codeacademy(コードアカデミー)」を実施にやってみた実践レポートです。JavaScriptPHPRubyなどのプログラミング言語が学べます。 テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査 現在アメリカではオンラインで学べるプログラミング学習サービスがすごい勢いで人気を集めています。 今回は

    プログラミングが学べる「Codecademy」を実際にやってみた【日本語にも対応】
  • いますぐ実践! Linux システム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • sysstat でシステムの状態を定期的に監視する - いますぐ実践! Linuxシステム管理 / Vol.178

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • いますぐ実践! Linuxシステム管理

    「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ

  • dateコマンドのオプションについて - SH2の日記

    前回のエントリで当初「date -s "`LANG=C date`"」というコマンドをご紹介していたのですが、このオプションでは誤動作する場合があるとのご指摘をいただきました。具体的には、環境変数LC_ALLまたはLC_TIMEが設定されている場合に、誤った時刻が設定されてしまいます。 # LANG=C date Wed Jul 4 02:47:29 JST 2012 # export LC_ALL=ja_JP.UTF-8 # LANG=C date 2012年 7月 4日 水曜日 02:47:38 JSTこの状態でdate -sコマンドを投入すると、文字列の解析に失敗して常に午後8時となります。 # export LC_ALL=ja_JP.UTF-8 # date -s "`LANG=C date`" 2012年 7月 4日 水曜日 20:12:00 JSTロケールの設定はLC_ALL→

    dateコマンドのオプションについて - SH2の日記
  • dstat2graphs - dstatのログをグラフ化するツール - SH2の日記

    dstatが便利ですね。 dstat が便利 | Carpe Diem dstatの万能感がハンパない - (ひ)メモ 私は特に--outputオプションでCSV形式のログファイルを出力できるところが気に入っています。番環境ではきちんとした監視ツールを使うと思いますが、開発・検証環境で手早くOSリソース情報を可視化できるので重宝しています。 それでもExcelやCalcでグラフを描くというのは何度も繰り返すと面倒なもので、 探したのですが見つからなかったので、連休を利用して作ってみました。 dstat2graphs - dbstudy.info サンプル1 (前回の負荷テストにおけるクライアントのグラフ) サンプル2 (サーバ) サンプル3 (KVMホスト) いくつか注意点があります。 dstat -tvfn --output log.csv 1しか受け付けないという割り切った作りです。

    dstat2graphs - dstatのログをグラフ化するツール - SH2の日記
  • SSDに対するBlock Discard/TRIMをSystemTapで可視化する - SH2の日記

    パソコンを買いました。 CPU:Intel Core i5-2400S Motherboard:ASUS P8H67-M EVO Memory:Patriot PSD38G1333KH 4GB×2 2個 SSD:Intel X25-M G2 120GB HDD:HGST Deskstar 5K3000 2TB Power Supply:Owltech Xseries SS-650KM 今回はOLIOSPECさんのMicro Monster H67 Super Silentをカスタマイズして注文しました。デスクトップ機をリプレイスするのは実に9年ぶりなのですが、最近のパソコンはすごく良いですね。速くて静かで低消費電力です。日はこのパソコンを使って、近年のLinuxにおけるSSD事情を確認していきたいと思います。 TRIMとは 近頃では定番SSDの座をすっかりCrucial RealSSD

  • SystemTapでMySQL 5.5のDisk I/Oを分析する - SH2の日記

    2010年1月の記事SystemTapでMySQLのDisk I/Oを分析するの続きです。以前作成したSystemTapスクリプトは、実はMySQL 5.5のDisk I/Oを分析することができませんでした。というのも、MySQL 5.5からInnoDBが非同期I/Oを行うようになったのですが、以前のスクリプトは非同期I/Oに対応していなかったためです。日はMySQL 5.5におけるInnoDBの非同期I/Oについて、確認していきたいと思います。 非同期I/Oとは 非同期I/Oとは、I/O処理をブロックされることなしに行う方式のことです。通常のI/O処理はそれが完了するまで待たされてしまうのですが、非同期I/Oを用いることでI/O処理の完了を待つことなしに他の処理を進めることができます。以下のウェブサイトでとても詳しく解説されています。 バッファキャッシュとAIO(1) - O'Reil

  • SystemTapでMySQLのDisk I/Oを分析する - SH2の日記

    実験エントリです。 動機 OracleのStatspack/AWRで取れるファイル単位のDisk I/O情報を、MySQLでも採取したい。これは次に示すようなデータです。 File IO Stats DB/Inst: ORA112/ORA112 Snaps: 6-7 ->Mx Rd Bkt: Max bucket time for single block read ->ordered by Tablespace, File Tablespace Filename ------------------------ ---------------------------------------------------- Av Mx Av Av Rd Rd Av Av Buffer BufWt Reads Reads/s (ms) Bkt Blks/Rd Writes Writes/s Wai

    SystemTapでMySQLのDisk I/Oを分析する - SH2の日記
  • tcpdump でパケットをのぞき見る方法まとめ。10分で僕にも出来た。tcpdumpの使い方 - それマグで!

    TCPDumpをつかってLDAPをDumpしてみた 準備 apt 一発で入る sudo apt install tcpdump まずは実行 sudo tcpdump 7:31:52.063902 IP 192.168.11.2.50088 > sys-watch.local.ssh: . ack 9395940 win 30284 17:31:52.064041 IP sys-watch.local.ssh > 192.168.11.2.50088: P 9406776:9407004(228) ack 45101 win 8576 17:31:52.064145 IP sys-watch.local.ssh > 192.168.11.2.50088: P 9407004:9407152(148) ack 45101 win 8576 17:31:52.064149 IP 192.168.

    tcpdump でパケットをのぞき見る方法まとめ。10分で僕にも出来た。tcpdumpの使い方 - それマグで!
  • Unixユーザーのログイン記録を調べて、不正アクセスがないか確認する。 - それマグで!

    ユーザーのログイン記録を調べる。 しばらく使ってないサーバーへ久しぶりにログインしたとき、誰かが使ってないか、Rootパスワード取られてないか不安に駆られることとかあります。サーバ乗っ取られてウチのサーバーがアタックしていると通報受けることも稀にあります。数十台あるとさすがに管理してられないのもあるので。。。 自分以外のユーザーがログインしてファイルを開いてたりしないか確認することもします。 ログイン状況の調査によく使うコマンドは次の通りです。 コマンド名 大体の用途 lastlog Unixの全ユーザーの最終ログインを見る last ログイン履歴を新しいモノから順に見る。 w 一文字でも立派なコマンド、ログインしている(tty使用中)のユーザー一覧 who wと殆ど同じ finger 昔は色々用途もあったけど、いまはwho/wと殆ど同じ ps 起動中のプロセスを見る 僕が実際使うのは 次

    Unixユーザーのログイン記録を調べて、不正アクセスがないか確認する。 - それマグで!
  • su/sudo したときの環境変数が気になったので調べた。 - それマグで!

    sudo su したときの環境変数と、自分の環境変数がどうなってるのか知りたい。 sudo su -l したときの環境変数と sudo su の環境変数がどうなっているのか知りたい。 rvm で環境作ってると、環境変数を意識しておかないとgem install しても入ってなかったり。そんなことが起きて環境ぐちゃぐちゃになるのでちゃんと意識しておきたいと思った。 環境変数をリセットしてsu / sudo するには次の方法がある。 sudoersに env_reset を書く su -l オプションで su する (unixとlinuxで違う?) 調べてみた。 とにかく調べてみるのが一番。 su したときと su -l したときの環境変数 左が su -l 、右が単純なsu su と su -l では環境変数が異なる。うん、そうだよね。 su したときの環境変数 と takuya の環境変数

    su/sudo したときの環境変数が気になったので調べた。 - それマグで!
  • Linux(ubuntu)ディスクのUUIDを調べてマウントする方法 - それマグで!

    /etc/fstabを書くときに、uuidになっててこまる。uuidの書き方を調べた ubuntuはuuidが標準になった。 uuidを使うと ディスクの接続が多少変わって /dev/sda1 /dev/sdb1 が入れ替わっても安心。 UUIDのサンプル ubuntuのfstabの例 1 # /etc/fstab: static file system information. 2 # 3 # Use 'blkid -o value -s UUID' to print the universally unique identifier 4 # for a device; this may be used with UUID= as a more robust way to name 5 # devices that works even if disks are added and re

    Linux(ubuntu)ディスクのUUIDを調べてマウントする方法 - それマグで!
  • ttyについて ttyやptsってなんぞ? - それマグで!

    PCにシリアルコンソールでログインできるように設定した。シリアルコンソールを使えばNICの設定などでもあわてずに利用できる。便利。シリアルコンソールでつかうmgetty mingettyのttyってなんだろう ttyとは、 どうやら、標準出力の接続先デバイス事のらしい。一般的にはpts、RS232C経由などはttyS0が標準出力の接続先になっていて、中継しているプログラムがmgetty。 図で表すと PC----ssh------/dev/pts/1--sshd----bash #ssh が接続されている PC----rs232c---/dev/ttyS0--mgetty--bash #rs232c が接続されている とttyなど仮想端末経由になっている。コレ今はよく解ったけど、ずっとよく解らなかった。 私が理解できるようになるまで、次のプロセスがありました。 2ヶ月前 先輩に訊いてみた

    ttyについて ttyやptsってなんぞ? - それマグで!
  • 「コマンドプロンプトからCygwinへ」の記事への補足 - それマグで!

    昨日のエントリが、被はてブ1000件達成しました。ありがとうございます。これだけの注目をあびることに恐怖すら覚えました。ブクマコメントや直接コメントを頂いたので幾つか補足説明をさせてください。 Cygwin環境の話がすごくブクマコメントいただいたので補足させてください。 やっぱり昔のCygwinイメージは強い。 昔のイメージって強烈なんだなと思いました。1.5以前のイメージとは違うんだよ。って最初に書いたんだけど、脱却は難しい感じでした。 1.7変更点やCygwinの細かいの話は id:fd0さんのエントリを参考にして欲しい。 コメントへのレス。 補足させてください。昨日のエントリでも間違ってるところもあるので、補足しながら訂正させてください。すいません。 以下の事について、レスしていきます。よろしくお願いします。 ブクマコメントの反響 ドライブ指定がキモい Mingwでもいいよね。 Ma

    「コマンドプロンプトからCygwinへ」の記事への補足 - それマグで!
  • Curlコマンドの使い方例。curlコマンドの情報は意外と少ない・・・ - それマグで!

    curl 便利ですよね。毎日のように使います。プログラミングなしでWEBアクセスやSCPアクセスができるので重宝します。 curl の使い方 curl コマンドでよく使うものについてまとめておきます。 ページ取得 curl URL まず一番単純な例。example.comサイトのトップページを標準出力へ出力。 curl http://www.example.com/ ページをファイルに保存 curl -o name URL 標準出力ではなくローカルへ自由なファイル名で保存するには-oオプションで。 $ curl -o my.jpg http://www.example.com/top.jpg -O(オーの大文字)オプションの場合 -O (大文字)はURL上のファイル名で保存する。 $ curl -O http://www.example.com/images/photo1.jpgこの場合

    Curlコマンドの使い方例。curlコマンドの情報は意外と少ない・・・ - それマグで!
  • rsyncの基本的な使い方。 - それマグで!

    rsyncの基的な使い方を覚えましょう。 昔、WinSCPLinuxサーバーからLinuxサーバーへ転送しているのを見たことがあった。WinSCPWindows経由してたわけです。それをみて「Rsync使わないの?」「よく解りませんし、前にグチャグチャになったことがあるので」と答えが返ってきてヘナっとなった。「SCPの方が確実ですよ」と言われたこともある。まぁそうなんだけど。 WinSCPでなんてやってないでさ、Rsyncでパパットできるようになりませんか。Winscpでサーバー間の同期が出来ないので、ローカルのWindows経由は止めましょう。転送待ちですとか言わないようにしよう。 rsyncの特徴 更新されたファイルだけを転送できる Gzipで圧縮転送が可能 使ってないファイルを消せる。 切れても途中から再開できる 転送再開ができるのがcp /scp転送と大きく違うところでしょう

    rsyncの基本的な使い方。 - それマグで!
  • Linux ユーザーを一括登録&一括パスワード設定 - それマグで!

    Linuxでまとめて50人くらいのユーザーを作る必要があった。ユーザーを作るまでは簡単だった、だけど、パスワード設定が面倒。余りに面倒だったのでメモをすることにしました。 パスワードを一括で設定する 先にユーザーの一欄を作る users.txt takuya masanori daichi yoshihiko ユーザーと初期パスワードの一覧を作る for u in `cat users.txt`; do echo $u:`/usr/bin/mkpasswd` ; done > out.txt 一覧出来た out.txt takuya:x0=Cy8tzW masanori:9EalnhX]6 daichi:q8OwV'n8p yoshihiko:1u”FyigT6区切り文字は : です。 まとめて、パスワードを登録する sudo chpasswd < out.txt 同じファイルを使えば、新

    Linux ユーザーを一括登録&一括パスワード設定 - それマグで!
  • manコマンドの使い方(1) とマニュアル:manの探し方 - それマグで!

    man command の使い方を調べた。 manコマンドとは マニュアルを読むことが出来る。マニュアルがとても大事なので、しっかり使い方を覚えるのがいい。中途半端にGoogleで聞きかじるくらいなら、Man読んだ方が速いことがおおい。 すぐまとめサイトに頼ったり、まとめサイトを作ろうと企画するけど、まとめサイトは備忘録になりがちで、汎用性は高くない。また、誰が書いたか分からないことがあり、別途、正式マニュアルを探すほうがいい。そのとき役に立つのが、マニュアルコマンド。 サーバー壊してはバイトになおさせるとかあり得ないよね。 公式ドキュメントを見ないで、blog記事ばかりをあてにして、設定をいじった挙句、動かなくなって、それを何時もバイトが直すとかねぇ。そして分からなくなって再インストール。再インストールでキレイになってるとか、あり得ないから。時間の無駄です。バイトに再インストールさせてい

    manコマンドの使い方(1) とマニュアル:manの探し方 - それマグで!
  • ps auxしてからKillしてたらダメだよ。(pgrep/pkill) - それマグで!

    Linux サーバー Hacksので勉強したネタだけど。 プロセスをKillするのに ps してからKillは面倒 ps ax | grep screen sudo kill XXXX Pgrepを使う pgrep screen | sudo xargs killこれでかなり楽になる。pgrep pkillはかなり便利。 2015-03-31追加 この時はpgrepしか知らなかったので、pgrep しか書いてないけど kill -HUP $(pgrep my_command)を pkill 使うともっと楽になる。 pkill -HUP -f my_command とすることが出来る。 pgrep/pkill はprocpsに含まれる、他に関連するコマンドは次のようになる。 free, kill, pkill, pgrep, pmap, ps, pwdx, skill, slabtop,

    ps auxしてからKillしてたらダメだよ。(pgrep/pkill) - それマグで!
  • OSS Message Pedia

    さあ、始めよう オープンソースプロダクトのメッセージを検索できます。あなたが使用しているソフトウェアのエラーメッセージの対処方法が分かります。 調査して欲しいメッセージ 153(ja) [4] Debug: sleeping function called from invalid context at : [1 month ago] 84(ja) [3] request_module: runaway loop modprobe [18 days ago] 5356(ja) [3] : VFS is out of sync with lock manager! [1 month ago] 22473(ja) [3] : dma_timer_expiry: dma status == 0x [3 months ago] 13057(ja) [3] tty_check_change: tty

  • bashにて複数端末間でコマンド履歴(history)を共有する方法 (iandeth.)

    Tera Term 等の端末を複数同時に立ち上げて作業したり、screenにて複数の仮想端末を同時並行で操作する際、コマンド実行履歴が端末間で共有できなくて困る事が多々あります。「さっきのfindコマンドをもう一度... 引数どう書くんだっけなぁ... あ、確かコマンド履歴にあったはずだなぁ... ちっ、それはあっちの端末の履歴だったか」みたいな。zshには端末間のコマンド履歴を常に同期できる'SHARE_HISTORY' なるオプション(*1)があって素敵なのですが、同じことを bash で実現する方法を調べたのでご紹介。 (*1) zshの同機能について詳しくはITmedia記事 "豪傑の三種の神器【後編】" を参照の事 不具合) 通常設定のbashで困る事 1. 複数端末間でコマンド履歴の共有ができない 同時に立ち上げている端末間で履歴の共有ができなくて不便に感じることがある。 2.

  • VMWare Player + CentOS5 環境構築メモ: ある SE のつぶやき

    CentOSのダウンロード CentOSのダウンロードサイトから、CentOSのCDイメージをダウンロードします。 今回ダウンロードしたCDイメージは、以下のものになります。 CentOS-5.1-i386-bin-1of6.iso (625MB) CentOS-5.1-i386-bin-2of6.iso (632MB) CentOS-5.1-i386-bin-3of6.iso (618MB) CentOS-5.1-i386-bin-4of6.iso (635MB) CentOS-5.1-i386-bin-5of6.iso (631MB) CentOS-5.1-i386-bin-6of6.iso (528M) インストール事前準備 デフォルト設定だと、VMWare PlayerはISO形式のファイルを読み込むことができません。 ですので、先ほどダウンロードしてきたVMWareの構成ファイル

  • CentOS で行なっておきたいセキュリティ設定: ある SE のつぶやき

    はじめに Linuxセキュリティ設定ってなかなかまとまったものがないので、いろんなサイトを参考にしながら設定をまとめてみました。想定はWeb サーバーで、使用している Linux は CentOS 6.2 です。 設定内容は以下のようになります。 全パッケージのアップデート リモートからの root ログインを無効にする 公開鍵暗号方式を使用した SSH ログイン設定 iptables 設定 SSH ポート番号の変更 不要なサービスを停止 ログ監視設定 ファイル改ざん検知ツール設定 ウィルス対策ソフト設定 Apache の設定 全パッケージのアップデート 最初に以下のコマンドを実行して、全パッケージを最新の状態にする。 # yum –y update 後は脆弱性が発見された時、または定期的にパッケージのアップデートを行う。 リモートからの root ログインを無効にする リモートからメ

  • はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ

    今まで共用サーバーしか使ったことがありませんでしたが多くのサービスを作る上で専有サーバーを使ったりさくらのVPS を使ったりできるようになれば行けないと思ったので、丸1日かけて勉強しました。CUI でのサーバー管理は初めてなので、間違っているところがあったら教えてください。

  • さくら VPS + CentOS のチューニングや高速化で以前試せなかった設定

    はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめで一般的なサーバーの設定方法を紹介しましたが、さくらのVPS の設定の中で APC の入れ方や nginx の入れ方などは試せなかったので追記としてメモしておきます。 今回も以下の記事を参考にさせて頂きました。ここに全てがあるので私の記事では作業をシンプルに紹介していきます。ここに書いてない物についてはこの記事で書いてみます。 ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) – さくらインターネット創業日記 CentOS 5.6 へアップグレードする さくら VPS はこのブログを書いている現時点で契約した状態だと CentOS 5.5 がインストールされています。そのため CentOS を 5,6 にアップデートします。 まず自分の環境が CentOS 5.5 なのかを調べます

  • cron の実行順序を制御する方法 | Carpe Diem

    cron のバッチ処理の実行順序を制御するときは、setlock を使うと便利そうだったので、設定してみた。この方法では、setlock に setlock を設定している理由がよく分からなかったので、何はともわれ試してみた。 setlock についてのヘルプは、こちら。 まず、daemontools の RPM は、daemontools.spec を使うとすぐに作ることができる。daemontools は、/usr/local/bin にインストールされる。 次に、バッチ処理に見立てた簡単な次のプログラムを準備する。 1.rb: 一番最初に実行される毎時バッチ #!/usr/bin/env ruby require ‘date’ p “#{__FILE__} start #{DateTime.now}” sleep 120 p “#{__FILE__} end #{DateTime.n

  • カジュアルに MySQL を監視する方法 | Carpe Diem

    このエントリーは、MySQL Casual Advent Calendar 2011 – MySQL Casual の第 19 日目のエントリーです。 皆さんこんにちは、n0ts こと、Naoya Nakazawa です。 今日は、みなさん日頃からカジュアルに MySQL を運用して、日々生活されていることと思います。MySQL は、非常に安定したオープンソースソフトウェアだと思いますが、どんなものでもときにはおかしくなったりするものです。 「備えあれば憂いなし」ということで、僕は日頃から Nagios というオープンソースソフトウェアを利用して、MySQL がおかしくなっていかいか日々カジュアルに監視しています。 今日は、カジュアルに MySQL を Nagios を使って監視する方法を紹介したいと思います。なお、今回は CentOS 5.7 x86_64 というカジュアルな Linux

  • syslog-ng と rsyslog | Carpe Diem

    そろそろ格的に、CentOS な番サーバを syslog-ng あるいは rsyslog に切替えようと、実際に試してみました。切替えたい目的は、必要なログは集中管理したいためです。今回は、番環境でも使う Apache のアクセスログを他のサーバに転送するための設定方法だけ紹介します。 まずは、syslog-ng。 syslog-ng の家サイトをみると、次のような3種類のバージョンがあります。 オープンソース版: フリー、syslog-ng のオープンソースブランチ プレミアム版: いくつかの追加機能をオリジナルのオープンソース版 syslog-ng からフォークした商用版 ストアボックス版: ログのライフサイクル管理の中央ログサーバアプライアンス 次に CentOS では、バージョン 2.1.4 が EPEL のリポジトリから提供されています。家サイトでは、次のバージョンが

  • CentOS をインストールしたあとに、まず行う設定 | Carpe Diem

    野良で CentOS をインストールしたあとに、まず行う設定をまとめておく。 SSH を公開鍵認証のみにする、SSH のリロードをしてから ssh -v で公開鍵認証のみになっていることを確認する sudo の設定をしてから、root アカウントを無効にする (sudo passwd -l root) 不要なサービスを停止する (下のようなシェルスクリプトを準備しておくと便利) iptables の設定を確認する (iptables の設定は /etc/sysconfig/iptables にあるので雛形を作っておくと便利) 時刻を NTP であわせる ipv6 を使っていないならオフにする ZeroConfiguration をオフにする (/etc/sysconfig/network に NOZEROCONF= yes を追加して、sudo /etc/init.d/network re

  • Yum の変数を追加する方法 | Carpe Diem

    CentOS 5/6 系で、/etc/yum.repos.d/ の yum リポジトリの設定をみてみると、$releasever や $basearch という変数名が使われていて、リリースバージョンにあうようになっていて便利ですよね。ですが、$releasever は、CentOS 6.3 なら 6 としか入らないので、多少不便です。毎回、バージョンアップすることに /etc/yum.repos.d/ の設定を固定値で書き換えても当然いいのですが、めんどくさいということで、Yum の変数をカスタマイズする方法を調べてみました。 まず、定義されている Yum の変数をチェックするには、次のワンライナーで確認することができます。 $ sudo python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yu

  • sudos | Carpe Diem

    番サーバ上で、sudo コマンド経由でスーパーユーザ権限で実行することはよくあります。 sudo コマンドはなくてはならないコマンドですが、同時に危険なコマンドでもあります。 今まで、ずっとデフォルトの sudo の設定で使っていたのですが、改めて設定を見直してみました。 sudo の公式ページをみてみると、頻繁にバージョンアップされているのがよく分かります。/etc/sudoers の設定方法も詳しいドキュメントがあっていい感じです。 次の2点ほど設定を見直しました。 デフォルトのパスワードのキャッシュ時間を 0 にする パスワードプロンプトにホスト名を表示する まず、最初の設定はデフォルトだと 5 分間、パスワードがキャッシュされます。そうすると、連続で sudo コマンドを実行するとき、パスワードを聞かれないためオペミスを起こしてしまう可能性が高まります。そこで、キャッシュ時間を

  • Apache チューニング Tips | Carpe Diem

    先日、Web サーバ勉強会 #2 が開かれました。内容は、Apache のチューニングということで、参加したかったのですが、他の予定があって参加できませんでした。 そこで、僕が個人的に行っている Apache のチューニングを紹介したいと思います。最初、スライドで作成しようかと思ったのですが、ブログにまとめたほうがよさそうなのでブログにまとめていきます。 まず、大前提として Apache をチューニングするうえで、大事なことはその Apache が提供する Web サービスの種類のよって大きくチューニングする内容が異なるということです。例えば、動画・写真共有サービスと株価情報のサービスを比較すると、当然のことながら大きくサービスの内容が異なりますし、HTTP レベルでみるとクライアントからのリクエスト数、データサイズ、などがかなり違ってきます。 ですので、まずは自分が扱っているウェブサービ

  • LinuxでCPUの動的クロック変更を無効にする方法 | Carpe Diem

    最近のLinuxでは、自動的にCPUの動的クロック変更が有効になっています。トラフィックの激しいサービスを受けるサーバーの場合、無効にしたかったので、その方法を調べてみました。エコでなくてすいません・・・。 まず、Ubuntu 12.10 amd64 では、次のとおりです。 1. cpufrequtils パッケージをインストールします $ sudo apt-get install cpufrequtils 2. 現在の状態を確認します $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor ondemand ... ondemand という表示が CPU コア数分表示されている場合、CPU の動的クロック変更が有効になっています。 ついでに現在のクロック数を確認します $ cat /sys/devices/system/cp

  • dstat が便利 | Carpe Diem

    dstat という vmstat, iostat, netstat, nfsstat, ifstat 用の置き換えとして使える多機能ツールがあることを知ったので、CentOS でさっそく試してみました。 まず、インストール方法ですが、公式に dstat パッケージが提供されているので yum 一発でインストールすることができます。 $ sudo yum install dstat /usr/bin/dstat にインストールされます。 dsat は多機能ツールですが、使い方は dstat –help するとたくさん表示されます。 まず、オプションを指定しないで実行してみます。 $ /usr/bin/dstat —-total-cpu-usage—- -dsk/total- -net/total- —paging– —system– usr sys idl wai hiq siq| read

  • http://www.sssg.org/blogs/naoya/archives/2057

    http://www.sssg.org/blogs/naoya/archives/2057
  • CentOS 5 の初期設定 | Carpe Diem

    CentOS 5.x をインストールしたあと、いろいろと初期設定を行っています。今は、サーバ用途の場合 kickstart の %post セクションでいろいろな初期設定をまとめて行って自動化しています。kickstart は、別の機会に公開するとして、今回は %post セクションで行っている初期設定を順番に紹介します。紹介する順序は、順不同です。 NOZEROCONF を設定する 余計なネットワーク経路を作らないために、/etc/sysconfig/network に次の設定を追加します。APIPA という仕組みを使う場合は必要です。 NOZEROCONF=yes IPv6 を無効にする IPv6 を使っていないので、/etc/modprobe.conf に次の設定を追加します。 alias net-pf-10 off alias ipv6 off ifdown-eth にバッチをあて

  • DNS キャッシュについての考察 | Carpe Diem

    比較的アクセスのあるウェブサーバがあって、そのウェブサーバから結構な回数で Web API をたたいています。ご存じのとおり、Linux では DNS をキャッシュしてくれないので、Web API をたたくために毎回 DNS へのアクセスが発生して、DNS の負荷がすこし上がってきたので、ウェブサーバに DNS キャッシュを入れてみることにしました。 今回の用件は、次のとおりです。 Web API でたたくときにドメインを、それぞれのウェブサーバでキャッシュしたい おもに外部ドメインをキャッシュするので、DNS ラウンドロビンにはできれば対応したい ということで、いろいろと調査したり、友人からアドバイスをもらったところ、Unbound、Dnsmasq、caching-server、の三つの選択肢があることが分かりました。それぞれ、CentOS 5.7 x86_64 の環境で、試していました

  • 64bit かどうか判定する方法 | Carpe Diem

    Archives January 2017 (1) December 2016 (2) October 2016 (2) August 2016 (2) June 2016 (3) May 2016 (3) February 2016 (3) January 2016 (6) December 2015 (4) November 2015 (1) July 2015 (1) December 2014 (4) November 2014 (1) October 2014 (2) August 2014 (1) July 2014 (1) June 2014 (2) April 2014 (4) February 2014 (3) January 2014 (1) December 2013 (2) September 2013 (1) August 2013 (3) July 2013 (

  • 強烈に便利なzshrcの設定 3種盛り - 射撃しつつ前転 改

    タイトルはやや釣りぎみのような気もするが、この設定がないサーバで長時間作業したくない、と思う程度には便利なので、個人的には釣りではないと言える。 ctrl + 矢印で単語単位のカーソル移動 コマンドの真ん中あたりに間違いがあった場合、修正するためにカーソルを移動させるのはちょっとした苦痛である。デフォルトのキーバインドだと、emacsバインディングであればalt + bとかalt + nで単語単位で移動できるのだが、これは片手で打つと親指に無理がかかるキーバインドである。そこで、emacsと同じように、ctrl + ←→ で単語単位の移動を可能にしておく。ついでに、/は単語の一部と見做さない様に設定しておく。この設定により、長いパス名の中程に間違いがあった場合に修正するのが楽になる。 bindkey ";5C" forward-word bindkey ";5D" backward-wor

    強烈に便利なzshrcの設定 3種盛り - 射撃しつつ前転 改
  • サルでも分かる多段ssh - 射撃しつつ前転 改

    仕事をしていると、お客さんの環境にログインするため、 踏み台マシンを経由する必要がある 踏み台マシンへのログインすら、特定範囲のIPアドレスからしか受け付けてくれない といった厳しい条件を満たさなければならない場合があり、多段にsshをしなければいけないことがある。しかし、単純な多段sshには、 毎回順繰りに多段ログインするのは結構めんどくさい scpでいちいち中継サーバーにコピーしていく必要があり、中間サーバーのディスク容量が足りない場合に大きなファイルがコピーできない といった問題がある。 実は、sshには設定ファイルがあり、設定を行うことで、間に何台のサーバーを挟んでいようとも、あたかも直接アクセスしているかのように接続することができるのであるが、世間的にはあまり知られていないようだ。知らないのは非常にもったいないので、簡単に説明しておく。 設定ファイルは~/.ssh/configに

    サルでも分かる多段ssh - 射撃しつつ前転 改
  • ディスクキャッシュを簡単にクリアする - 射撃しつつ前転 改

    3年前にディスクキャッシュをクリアするためにはunmountしてからmountしなおせば良いという事を知ったが、これは自由に取り外しができるパーティションがないと使えない。強制的にキャッシュをクリアする方法を知ったのでメモしておく。 sudo sysctl -w vm.drop_caches=3; sudo sysctl -w vm.drop_caches=0; 参考:ext3の dir_indexを試す 追記: sudo sysctl -w vm.drop_caches=3 だけでOKだとkosakiさんからコメントで教えてもらいました。

    ディスクキャッシュを簡単にクリアする - 射撃しつつ前転 改
  • ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改

    ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす

    ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改
  • sshを使いこなすための7つの設定 - 射撃しつつ前転 改

    五月病が抜け切らないIT系新入社員に贈るシリーズ第1段。 ~/.ssh/configにはいろいろな設定が書けるが、周囲を見渡した限り、あまり活用されているようには見受けられない。そこで、今回は便利な設定をいくつか集めてみた。 長いホスト名に短い名前をつける Host exp1 HostName verrrryyy.looooong.hostname.example.jp ssh verrrryyy.looooong.hostname.example.jpの代わりにssh exp1でログインできるようになる。 ちなみに、zshの場合、configファイルに登録されたホスト名はsshコマンドを打つときに補完されるので更に便利。 特定のホストへログインするときのユーザ名や鍵をカスタマイズする Host github.com User tkng IdentityFile ~/.ssh/id_rsa

    sshを使いこなすための7つの設定 - 射撃しつつ前転 改
  • ディノworkshop

    こんにちわ。arashoです。 表題の件で勉強会「快適なwebアプリケーション構築のための基礎知識 増えていく負荷とサーバと機能に どう向き合うかの巻」を開催しました。 今回はwebサーバ、DBサーバを増やして、インフラを構築・拡張していく場合、 インフラとアプリケーションは互いに強力しあわなければいけないんだよ 一つの問題の解決に対して解は複数あって、メリット・デメリットを比較して判断しないといけないんだよ と言うことを伝えたかったのですが、伝わっているといいのですが...。 とりあえず公開します。 使用したスライド [Read more →]

  • 講習会「文字集合と文字エンコーディング」を開催しました — ディノオープンラボラトリ

    「文字集合と文字エンコーディング」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。文字集合という単語を知っている必要はないですけど、少なくともUTF-8とShift_JISとでは扱える文字の種類数が違うことだけは伝えたかったので、その意味では目標が達成できたと思っています。 まとめ 文字集合とは、扱える文字の集合 JIS X 0208なら6000文字くらいの日語の文字 UCS-2なら60000文字くらいの世界中の主要な文字 文字エンコーディングとは、文字の集合をバイト列に直す方式 Shift_JISはJIS X 0208(など)を1〜2バイトにする UTF-8はUCS-2を1〜3バイトにする 文字エンコーディング関連のツールを使いこなそう nkfやlvを使いこなそう 日語を探すならlgrep 最終兵器:hexjaで16進ダンプ ムービー

  • ディノオープンラボラトリ — * Web/JS(あまくち) part.7 - jQuery セレクタクイズ

    jQuery と言えばセレクタ、大変に便利で使える機能です。 さーて新卒皆にもセレクタ教えるぞーと意気込んでみたところ、バージョンアップに伴いセレクタがパワーアップしておりまして知らない表現が色々と・・ これではいかんと密かに自分の勉強も兼ねつつ jQuery Selector クイズを作って勉強会に持ち出してみました。 まるっと暗記するのではなく 何となく知っている 解決する手段を身につけている 状態になるため、リファレンスにざっと目を通した後にクイズとリファレンスを交互に見比べながら遊んで貰えると良いと思います。 興味ある方はチャレンジしてみてください。 前説ムービー コード (回答用に template.js を用意しています。)

  • ディノオープンラボラトリ — 講習会「サーバセキュリティ」

    「サーバセキュリティ」というタイトルで社内勉強会を開催しました。普段の勉強会ではSQLインジェクションやXSSなどWebアプリケーションのセキュリティの話題が多く、サーバのセキュリティについては人によって知識がまちまちなので、簡単にまとめてみました。普段サーバをいじらないポジションの人でも、セキュリティフィックスを当てる際にお客さんに説明することはあるでしょうから、サーバまわりについても概要を知っておいた方が良いと思います。 まとめ remote exploitは要注意 セキュリティフィックスが出たらすぐ適用すべき 公開サーバは常時パスワード総当たり攻撃を受ける 簡単なパスワードをつけない 可能ならパスワードログインを禁止すべき トロイの木馬は現実にあり得る脅威 うっかりopen proxyを作ったりしないように ムービー 発表資料 スライド(PDF)

  • ディノオープンラボラトリ — 講習会「メール」第一回

    「メール」をテーマに講習会を開きました。今後、複数回に渡りメール周りの様々な知識を紹介して行ければと考えています。 プログラマとしての担当範囲という視点では、「mb_sendmail()等の関数を用いればメールが送れる」しか知らなくてもギリギリ仕事はできるかもしれませんが、当にそれだけの知識しか無いとしたら不安です。メールに限らず、ある程度の周辺知識は何事にも必要ですよね。 「メール」第一回目の今回は、送信した後の事がイメージできるようになることを目標に、メールを送信してからどのような過程を経て相手に届くかについて説明しました。 メールの送受信の仕組みには、多くの登場人物(アクター)が絡んでいます。登場人物が多い分、トラブルが起こるポイントも様々です。 今回の講義では、各過程におけるトラブルの原因や、確認方法も合わせて紹介しています。メール送受信の仕組みを知る事で、トラブルの原因発見や解

  • Web/JS(あまくち) part.5 – イベントハンドラ — ディノオープンラボラトリ

  • ディノオープンラボラトリ — 講習会「コンピュータと時刻・日付」を開催しました。

    「コンピュータと時刻・日付」というタイトルで社内勉強会を開催しました。今回は一つのテーマに関してアラカルト的に細かい話題を集めてみましたが、おおむね好評だったようです。主に初級者向けの内容でしたが、一定の経験がある人もそれなりに得るものがあったようです。 まとめ 日付・時刻の処理には用心しよう 仕様は固まっているか? 身近な割に意外と複雑なので油断禁物 自前実装にバグがないか? 分岐が多くなりがち→テストケースも多い サーバの時刻は合っているか?(NTP) unix timeで扱える範囲内か?(2038年問題) ムービー

  • Web/JS(あまくち) part.4 - DOM — ディノオープンラボラトリ

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JS(あまくち) part.3 - オブジェクト — ディノオープンラボラトリ

    エンジニア一年生に贈る Web/JavaScript(あまくち) part.3 です。 今回はオブジェクトを扱っています。 prototype を教えるならここなのですが、今回はすっ飛ばしました。 フォローはここ OpenLab にて適宜行おうと思っています。Web/JS あまくちを終えた一年生が OpenLab の発展記事を読みながら見直せば多少深い部分にも理解が付いているようなレベルを目指せれば〜と思っています。 ムービー 前半 後半 プレゼン資料 webjs-easy-part3.pdf

  • JavaScript: 変数+無名関数と関数リテラルの違い — ディノオープンラボラトリ

    Web/JS(あまくち) part.2 - 変数宣言、関数、無名関数 で関数オブジェクトの生成について触れましたが、var name = function(無名関数を変数にバインド)とする方法とリテラルとでは挙動が違うのではないかとの指摘がありました。 JavaScript の var についての考察にあるように、

  • Web/JS(甘口) part.2 - 変数宣言、関数、無名関数

    エンジニア一年目に贈る Web/JavaScript(甘口) 講習会、第二回です。 今回は 変数宣言 関数と無名関数 を扱いました。 (more...)

  • Web/JavaScript 講習会 part.1(JavaScript の概要と特徴)

    今年入社したエンジニア一年生に JavaScript を教え始めました。 昨年度から行っていたフォローアップ講習会 Web/JS シリーズを、一年目向けに焼き無して教えています。 今回はその一回目、JavaScript の特徴と概要についてさらっと語っています。 (more...)

  • Web/JavaScript 講習会 part.21(失敗しないJS)

    JavaScript で楽に安定開発&運用するための社内勉強会を行いました。 こいつぁ斬新!凄い!といった内容ではなく、ごくごく基な「jQuery や dojo のようなライブラリ使ってクロスブラウザ対応しようぜー」「対応環境はライブラリに合わせて設定しようぜー」といったTipsを紹介しています。 ムービー プレゼン資料 followup-webjs-part21.pdf

  • WEBサーバ設定の基礎1

    社内勉強会でWEBサーバの設定に慣れていない人を対象にWEBサーバ設定の講習1回目を行いました。 AskeetでしかApache設定の経験が無い人に対して開発サーバの環境構築時の助けになるようにということが目的です。 設定方法そのものより扱い方などが1回目のテーマになっています。 (more...)

  • 講習会『CSS フレームワーク/CSS Reset』を開催しました

    cos31です。 今回はCSSのクロスブラウザを簡単に利用してもらうための選択肢として「CSS フレームワーク/CSS Reset」を紹介しました。 CSSフレームワークは以下の様な機能を提供しています。 外枠(レイアウト)提供 タイポグラフィ デザインの提供 CSS Reset CSS Resetは「初期化CSS」と言われているものです。 概要がメインになっていますのでどんなものかを知ることに主眼に置いていますので、CSSコードはほとんど出てきませんのでご了承ください ちょっと内容の紹介 各ブラウザごとにHTMLタグのエレメントの初期スタイルが異なっている為、同じファイルを閲覧してもこれだけの差異が生まれます。 CSSフレームワークを用いると、この差異を吸収しどのブラウザでもほぼ同様の表示を行うことが可能です。 以下の例は上のコードに、YUI Reset CSS,YUI Font C

  • 『講習会『CSS フレームワーク/CSS Reset』を開催しました』へのコメント

    ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

    『講習会『CSS フレームワーク/CSS Reset』を開催しました』へのコメント
  • セキュリティ講習(7)Same Origin Policy

    「Webセキュリティ (7)Same Origin Policy」というタイトルで社内勉強会を開催しました。今まで1回も公開してないんですが、実はセキュリティの社内講習会は7回目です。近いうちに残りの6回分も公開します。 まとめ Same Origin Policy 同一ホストだけ信用するポリシー 同一ホストのみ別URLのDOM操作が可能 崩されると間接攻撃されるのと同等の脅威 「信用できないユーザが同一バーチャルサーバにJS/HTMLを設置できる場合、セキュリティ的にアウトだよ」ということを再確認しました。 ムービー 発表資料 スライド(PDF) 内容の補足など 「クロスサイト通信とセキュリティ」という章を時間の都合で削りました。このあたりもいずれ話したいところです。 参考資料 同一生成元ポリシー - MDC Mozillaの技術紹介ページ。 document.domainの書き換えとi

  • 講習会『エンジニアが知っておくべきUI/ユーザビリティ』を開催しました

    初めましてcos31です。 入社してもうすぐ2ヶ月がすぎました、 さっそく講師に挑戦してみました。 「エンジニアが知っておくべきUI/ユーザビリティ」というお題目の講習を行いました。 Webアプリを構築する際に必須となるユーザインタフェース 基礎の概念を理解した上で、UI/ユーザビリティに興味を持ってもらえればと開催しました。 ユーザインタフェース ユーザーインタフェースの思想 メンタルモデル アフォーダンス インタラクションデザイン ユーザビリティ 発表資料 スライド(PDF) 内容補足 ユーザビリティに関しては、ISOやらいろいろところで定義されていますが、 Webよりな代表的な定義としてニールセンの定義を説明してます。 ご賞味ください。 発表の様子

  • 勉強会「快適なwebアプリケーション構築のための基礎知識 増えていく負荷とサーバと機能に どう向き合うかの巻」を開催しました

    こんにちわ。arashoです。 表題の件で勉強会「快適なwebアプリケーション構築のための基礎知識 増えていく負荷とサーバと機能に どう向き合うかの巻」を開催しました。 今回はwebサーバ、DBサーバを増やして、インフラを構築・拡張していく場合、 インフラとアプリケーションは互いに強力しあわなければいけないんだよ 一つの問題の解決に対して解は複数あって、メリット・デメリットを比較して判断しないといけないんだよ と言うことを伝えたかったのですが、伝わっているといいのですが...。 とりあえず公開します。 使用したスライド

  • 講習会「ネットワークを学ぼう 3/3」 ~ARP偽装完結~

    社内勉強会でネットワークを学ぶための講習3回目を行いました。 3回目にしてやっと、これまで空気のようなものだったARPとキャッシュPoisoningが題材となります。 EthernetとIPを知らないと「偽装の結果」が魔法のように思えますが、知ってしまえば不思議なことではないと納得がいくかと思います。 EthernetやARPなどの低レベルのネットワークを知るほどに、インターネットが研究者に閉じたネットワークであった「古きよき時代」を感じます。 ブロードキャストのような「便利なもの」には代償としてセキュリティのリスクが常に影のように寄り添っています、世の中うまくいかないものですね。 資料作りに疲れて大人の事情により具体的な攻撃手法や対策には触れていません。 煽るだけ煽って後半部分がやっつけ的な感じですが、樽の中に1つ腐ったリンゴがあると全部を腐らせるという怖い面とネットワーク設計の重

  • 講習会「ネットワークを学ぼう 2/3」

    社内勉強会でネットワークを学ぶための講習2回目を行いました。 2回目の今回は主にIPネットワークが題材となっています。 今回、「ARP偽装」は完全に空気のようなものでスライドのタイトルだけにしか出てきませんが、 EthernetとIPを知らないとARPの必要性が伝わらないと思いますのでIPネットワークが今回の話題となっています。 低レベルのネットワークを学ぶとネットワークが進化する過程のような歴史が感じられるのは自分だけでしょうか。 ARPについては3回目に話します!ということでIPネットワークがどのようなものか感じ取ってもらえればと思います。 スライド network2-080731.pdf 講習会の様子

  • 講習会「ネットワークを学ぼう 1/3」

    社内勉強会でネットワークを学ぶための講習1回目を行いました。 3回の予定で今回は主にEthernetについて知ってもらうことが題材となっています。 3回の講義で低レベルのネットワーク層(Ethernet,IPネットワーク)を知り、LANの簡単なトラブルシュートができるような知識を持ってもらえればということで設けました。 スライド network1-080717.pdf 講習会の様子

  • workshop — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.20(jQueryUI)

  • 講習会「intとfloat 〜小数をオススメしない理由」を開催しました

    「intとfloat 〜小数をオススメしない理由」というタイトルで社内勉強会を開催しました。浮動小数点数に関する一般論とPHPでの実例についてです。最初に覚えた言語がPHPなどのスクリプト言語だったりすると、案外このあたりの知識が手薄なものです。簡単すぎる内容かとも思いましたが、意外と好評でした。 まとめ 浮動小数点数は不要なら使わない 整数で代用できないか検討 理解しないと危険 大きすぎる数も注意 無限に正確に表せるわけではない ムービー

  • REST 入門 - ROA

    =souです。 REST 入門 第三回の動画と資料を公開します。 ROA と、フレームワークに REST が入るとどうなるか、その例として Rails の ActiveResource, ActionController::Resources に軽〜く触れています。 作成に当たっては yohei 氏の REST ROA 資料と 山田泰資氏@第八回XML開発者の日の資料を盛大に参考にさせて頂きました。 後半の Rails デモが「コードが小さくてわかんなかったよ!」との声があったのでスクリーンキャストで撮り直しました。内容は以下の通りです。 rails rest で Rails アプリを作成 ./script/generate scaffold User で User 関連の HTML やテーブル定義を作成 ./script/generate resource で REST 制約に基づい

  • REST 入門 - REST アーキテクチャスタイル

    =souです。 REST 入門 第二回の動画と資料を公開します。一緒に同資料で使われているネットワーク図の OmniGraffle ファイルを CreativeCommons で公開します。お役立てください。 肝心の内容ですが、REST アーキテクチャスタイル制約の話がgdgdになってしまい、興味の有る方は yohei 氏@ricollab のプレゼン資料 REST と ROAを読まれるようグイっと推しておきます。 動画の方も撮影の都合から音声のみのリアルサウンド状態になっておりますが、ご容赦ください。 動画:

  • Web/JavaScript 講習会 part.19(ぬこぬこ Flickr クライアントをつくろう) — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.18(ルー語変換クライアントでトゥギャザーしよう) — ディノオープンラボラトリ

  • REST 入門入門講座

    souです。 REST 入門のための入門講座@フォローアップ講習会の動画と資料を公開します。 フォローアップ講習会のレギュレーション、初級者が理解出来る難易度、日々の業務に役立つ内容、に合わせ、今回は REST 入門の、そのまた入門です。 今回で REST への概観と興味を持ってもらって、次回からより具体的な内容にはいります。 まとめ REST っぽいもの、REST っぽくないもの メール1通ごとに URL が割り振られているのは REST っぽい REST っぽいハンパーガーショップ 3つの視点と REST アーキテクチャスタイル web アプリケーション設計 分散コンピューティング アーキテクチャスタイル 流儀と実装 アーキテクチャスタイルは流儀、アーキテクチャはその実装 REST アーキテクチャスタイルは流儀、WWW はその実装 Roy Fielding Architectura

  • 講習会「telnetでWebサーバと喋ってみる」を開催しました

    「telnetでWebサーバと喋ってみる」というタイトルで社内勉強会を開催しました。ネットワークまわりの知識の確認と、Webアプリケーション作成時にリクエストやレスポンスを覗き見る方法について紹介しました。 ムービー 発表資料 スライド(PDF) 内容の補足など この回は社内でたくさんツッコミをもらいました。以下、補足です。 PHPのheader関数で指定するのはレスポンスヘッダです。ボケてて言い間違えました。 IPアドレスとIP(プロトコル)は違います。IPアドレスを略してIPと言っている個所があると思いますが、今回はプロトコルの話をしてるんだから注意すべきでした。 サービス名とポート番号の対応が/etc/servicesに書いてあります。ポート番号の代わりにサービス名を書くこともできます。 「TELNETプロトコルは簡単、というのは当なのか?telnetでも端末制御してるし、そこまで

  • 講習会「デーモンのしくみ」を開催しました

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • オブジェクト指向設計原則 最終回

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JavaScript 講習会 part.17 (jQuery で XHR-2)

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。 カテゴリ DB (2) MySQL (2) PostgreSQL (1) lang (40) ActionScript (1) C (1) haXe (4) JavaScript (8) Mxml (1) PHP (23) Python (2) Ruby (2) SQL (1) XML (1) OS (27) Linux (13) Cent (3) 仮想化 (4) Mac OS X (7) UNIX (9) Windows (3) shell (1

  • Web/JavaScript 講習会 part.16 (jQuery で XHR-1) — ディノオープンラボラトリ

  • オブジェクト指向設計原則 第1回

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • 講習会「プロセスとシグナル」を開催しました

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JavaScript 講習会 part.15 (jQuery でドラクエメニューIII) — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.14 (jQuery でドラクエメニューII)

    JavaScript 社内勉強会の14回です。 「ドラクエ風メニューを作る」を題材に、jQuery の基アニメーション機能を学習します。 (サンプルのコードは IE では表示が崩れて正しく動作しません。 Firefox か Safari をご利用ください。 DQフォントをインストールした OSX + Safari 推奨です。) ムービー: 資料: スライド コード 「IE で動くようにしてから出そうっと〜♪」なんて考えていたら長い間 Web/JS 講習会の投稿が止まってしまいまして、ごめんなさい。 取りあえず投稿したら?との指摘を受けたので IE 対応は後回しにして出させて貰います。 講習会自体は順調に進んで 18 回を数えており、追ってエントリも増えて行くと思います。

  • workshop — ディノオープンラボラトリ

  • 正規表現講習会(その2)を開催しました

    社内勉強会として、「他人の正規表現を読もう」と題して正規表現講習会の第二回を開催しました。「こんな正規表現があるよね」という情報共有のような回でした。きっと退屈な人も居ただろうと思います。基的にはマニュアルに書いてあるようなことばかりなのですが、社内で「この正規表現なら全員が読めるはず」という線引きをする試みです。もし「何であれが入ってないの?」などあれば教えてください。 ムービー 発表資料 スライド(PDF) この回の内容を要約すると「man perlre」に尽きるような気がします。万一これを知らないと誰かがまとめた二次情報に当たることになってしまいますので、いつまでたっても正規表現に対する苦手意識が解消できない気がします。もしくは、手近にあれば「青ラクダを開く」でもいいんですけどね。

  • http://openlab.dino.co.jp/2008/02/05/115701181.html

  • ソフトウェアテスト入門(ブラックボックステスト)

    ご無沙汰しております、takekoshiです。 社内勉強会として、 ソフトウェアテストについて基的な部分を発表しました。ブラックボックステストのうち、以下のものです。 同値分割 境界値分析 デシジョンテーブル 原因結果グラフ(紹介のみ) 前者2つについてはプログラマなら直感で行っていることもありますが、名前を知っているのと知らないのでは理解度が大きく違ってくると思います。 私自身はテストの専門家ではありませんので、間違っている部分があればご指摘いただければありがたいです。 スライド ソフトウェアテスト入門第1回資料(同値分割・境界値分析) ソフトウェアテスト入門第2回資料(デシジョンテーブル・原因結果グラフ) ムービー 第1回発表の日は鼻づまりで相当聞き苦しいかと思いますがご容赦ください。自分の声は聞いていてなかなか苦しいですね。

  • 正規表現講習会(その1)を開催しました

    社内勉強会として、正規表現について喋ってみました。「最長一致」をテーマに、正規表現マッチのイメージが湧いていない人にもわかるような内容を目指したつもりですが、POSIXとPCREの最長一致の違いなど、ややマニアックな内容も含んでいます。 第29回PHP勉強会でも似た内容で発表させてもらいましたが、実はこの社内勉強会のプレゼンの一部を取り出して紹介したものでした。 今回のムービーはzoomeにアップロードしてみました。アップロードされている他のムービーと見比べると異色な内容のような気がしますが、ありがたく使わせて頂きます。 ムービー 発表資料 スライド(PDF) 補足1: 「最短一致は使わない」について 基的に最短一致は使うな、という結論にしてしまっているのですが、これは説明を端折っている面が大きいです。私の考えでは、正規表現初心者の頃は特にそうなのですが、「マッチングが最長一致であるため

  • Web/JavaScript 講習会 part.13 (jQuery でドラクエメニュー)

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JavaScript 講習会 part.12 (jQuery イベント)

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JavaScript 講習会 part.11 (jQuery 入門) — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.10 (第一部 完) — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.9 (ぐりもんでXHR、Prototype) — ディノオープンラボラトリ

  • workshop — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.8 (ぐりもんでごりごり書こう)

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • Web/JavaScript 講習会 part.7 (this, スコープと環境、クロージャ)

    ディノオープンラボラトリは、株式会社ディノの社員ブログとして主に技術者向けに情報公開をするウェブサイトです。 多くの社員が自分の興味のあることについての記事を書き、結果として社外の方々にも面白がってもらえる状態が理想だと考えています。 詳しくはaboutをご覧ください。 株式会社ディノでは技術者を募集しています。詳しくは採用情報をご覧ください。

  • 同じコードを書いてもらって解説(クロージャ問題) Re: Web/JS part.6 — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.6 (ホスト環境、オブジェクト、this、環境)

    社内向け講習会 Web/JavaScript part.6 のスライド、ムービー等をアップロードしました。 Web 並びに JavaScript をテーマにした初心者向けの講習会です。 今回はキモの部分、オブジェクトや環境、this といった重要なトピックを扱っています。 ムービー:

  • Web/JavaScript 講習会 part.5 (DOM を使おう)

    社内向け講習会 Web/JavaScript part.5 のスライド、ムービー等をアップロードしました。 Web 並びに JavaScript をテーマにした初心者向けの講習会です。 DOM を自由に扱えるよう、オブジェクトを調べ、リファレンスを参照する、といった内容です。 ムービー:

  • 同じコードを書いてもらって解説 Re: Web/JS part.4 — ディノオープンラボラトリ

  • Web/JavaScript 講習会 part.4 (書いてみよう) — ディノオープンラボラトリ

    社内向け講習会 Web/JavaScript part.4 のスライド、ムービー等をアップロードしました。 Web 並びに JavaScript をテーマにした初心者向けの講習会です。 今回は JavaScript のいわゆる「関数」は、Function Object なんだぞ〜という話を中心に行いました。 資料: スライド コード またセミコロンの省略について、正しくは「jslintだとセミコロン省略がエラーになる(厳しい)が、大抵のブラウザではもう少し省略出来る」です。個人的には厳しい側に合わせておくといいと思っているので jslint の挙動歓迎。 講習会中で紹介した資料: JavaScript 第5版(JavaScript The Definitive Guide 邦訳) ECMA-262 講習会後に JavaScript で「これを書けば大体使えるようになる」といったアプリケ

  • Web/JavaScript 講習会 part.3 (DOM Scripting)

    社内向け講習会 Web/JavaScript part.3 のスライド、ムービー等をアップロードしました。 Web/JavaScript をテーマにした初心者向けの講習会で、今回は DOM Scripting がテーマです。 今回は DOM Scripting の手始めと以下の三つの原則について説明しました。 Progressive Enhancement Graceful Degradation Unobtrusive JavaScript 講習会のスライド、コード、ムービーをアップロードしています。 尚、ムービー中のスライドに表示されるコード (window.onload に関数 main を追加する処理) には間違いがあります。 ダウンロード版のコードセットで同等の訂正済みコードを提供しております。 朝来て資料作ってたら、、準備って大事ですね(爽)

  • Web/JavaScript 講習会 part.2

    株式会社ディノではフォローアップ講習会というオフィシャルな社内勉強会を設け、学習機会を提供しています。 先日 Web/JavaScript 講習会の第二回を実施しましたのでスライドをアップロードしました。 Web/JavaScript 講習会は「基とツボを押さえた JavaScript が書けるようになる」を目標とする、JavaScript を知らない人に向けた内容になっています。 今回の内容は今後学習を進めていく上で必要となる HTML の基礎知識です。 DOM、要素、属性、id、class について扱っています。

  • 講習会『UML (2)シーケンス図』

    社内勉強会でUMLを扱いました。 主にUML2系のシーケンス図の読み方が題材です。 シーケンス図は社内でもごく普通に使っているツールですが、細かい図式の意味となると、もしかすると微妙な人もいるのでは…。ということで取り上げてみました。 ▼スライド UML2.pdf ▼シーケンス図の例 by パターンウィーバー Community Edition uml2-example.pdf ▼講習会の様子

  • http://openlab.dino.co.jp/2008/07/25/144050308.html/comment-page-1

  • 続・$HOME/.ssh/configを活用していますか? — ディノオープンラボラトリ

    以前の記事「$HOME/.ssh/configを活用していますか?」では、設定ファイルを少し頑張って書けば普段のSSHライフが随分変わりますよ、と紹介しました。今日はその続編です。前回よりマニアックな設定を紹介します。 2段以上先のサーバにログインする Dynamic Forward機能を使う 共通設定をまとめて書く 2段以上先のサーバにログインする 目的のサーバにログインするために、踏み台的なサーバを経由しないと入れない環境があります。例えば、dmz経由でないとDBサーバにログインできない環境、というのは良くある構成でしょう。 このような場合に、ProxyCommandパラメータが利用できます。 上の設定で「ssh db1」とすると、sshでdmzに接続し、dmzから192.168.0.201へログインします。これを利用するには踏み台サーバにncコマンドが必要ですが、大抵の環境にインスト

  • lgrepコマンドで再帰的に日本語をファイル検索する — ディノオープンラボラトリ

    lgrepコマンドをご存知でしょうか。日語対応ページャlvの付属品で、対象ファイルの文字コードを推定して日語文字列をうまく見つけてくれるという、優れもののgrepです。 古いプロジェクトだと、プログラムはEUCだけど静的ファイルはSJIS、なんてことがあると思います。そんなときに大活躍です。 grepした結果の文字コード変換も勝手にやってくれるので、grep結果をnkfする必要もありません。至れり尽くせりですね。 そんなlgrepコマンドにも弱点があります。grepで言う-r(再帰的にファイルを検索)オプションが無いのです。どこに書いてあるかわからないエラーメッセージを探す、なんてときに-rは必須ですよね。無いなら作ってしまえ、ということで作ってみました。 alias lgrep-r="find . -type d -name .svn -prune -o -type f -print

  • cronでエラーメールの送り先を指定する方法 — ディノオープンラボラトリ

    cronは良く使うツールの一つだと思いますが、何故かトラブルの思い出がつきまとうのは僕だけでしょうか。今日はそんなcronの便利な機能を一つ紹介します。 cronで実行するコマンドの作法 はじめにcronスクリプトの作法を紹介します。cronは決められた時間が来るとコマンドを自動実行する仕組みですが、自動実行するコマンドは下記の条件を満たすべきです。 正常終了した場合は標準出力/標準エラー出力に何も出力しない 異常終了した場合は標準出力/標準エラー出力にエラーメッセージを出力する というのも、cronで実行したコマンドが標準出力・エラー出力に1バイトでも出力した場合、その内容がメールで送信されます。僕は異常時だけメールを受け取る使い方が一番スマートに思えます。 もしくは、次のような使い方も考えられます。 コマンドのログは標準出力に出力し、ローカルのログファイルに追記する 異常終了した場合は

  • 文字エンコーディングが仲間外れのファイルを素早く見つける方法

    プロジェクトに多人数が参加するようになると、なぜかプロジェクトの標準とは異なる文字エンコーディングのファイルがcommitされていることがあります。UTF-8で統一しているはずなのにShift_JISのファイルがある、なんて場合ですね。そこでメンバーの注意力不足を指摘したり、「だから***(自分の使っていないエディタの名前を入れてください)はダメなんだ」とかいう宗教論争に発展させたりというのでは不毛ですよね。簡単に気づく方法があればそれでいいんですよ。 方法は色々あると思いますが、今日はどこのご家庭にも必ずあるnkfを使ってみましょう。最近のnkfには--guessというオプションがあり、文字エンコーディングを推測してくれます。 $ nkf --guess hoge*.txt hoge1.txt:EUC-JP (LF) hoge2.txt:UTF-8 (LF) hoge3.txt:B

  • スケーラブルで堅牢な参照用NFSサーバのつくりかた — ディノオープンラボラトリ

    今開発しているサービで、約100台位のサーバに対し/usrマウントを提供しているのNFSサーバがあります。参照専用とはいえ、100台位になってくるとそこそこのパフォーマンスが要求されますし、/usrという重要なポイントをマウントしているため冗長化も重要です、また台数が日に日に増えているためとスケールアウトも出来なくてはなりません。そこで、スケーラブルで障害に強い参照用NFSサーバを構築してみました。 簡単なイメージは下図のとおりです。 NFSサーバはA,Bの2台ありそれぞれrsyncで内容が同期されています。それぞれのNFSサーバには仮想IPアドレス(以下、VIP)がそれぞれついています。クライアントはマウント時に、nfs.mynet(mynet部分はサービスのドメイン名等)をDNSに問い合わせると、DNSはNFSサーバのVIPのどれかを返却します。問い合わせごとに返却されるVIPが変わ

  • 講習会「DNS基礎」

    初めまして。kounoと申します。 以後よろしくお願いします。 去る9月16日、「DNS基礎」というお題目で講習会を開きました。 DNSは現在のインターネットの根幹を担う重要なサービスであり、様々なアプリケーションで使用されています。 DNSは、世界中のサービスと連携する必要があり、自社のみで全てをコントロール出来ません。 さらに、ネットワークに与える影響が大きい非常に重要なサービスのため、組織内で設定できる人員も限られていると思います。 そのため、ディノ社内でもDNSの設定権限があるのは一部のメンバーのみで、残りのメンバーは他の誰かに依存しています。 今回の講義では、多数派のDNSを触る権限がない人を対象に より円滑に トラブルなく進める為に 必要な最低限の知識、DNSサーバ管理者とのコミュニケーションについて説明しました。 補足 SPFレコードの説明がされてないと社内でツッコミを

  • Subversion設定の標準化

    ディノ社内のバージョン管理は主にSubversionを利用しています。また、社内の開発環境はWindowsMacLinuxが入り乱れています。そんな環境で、一番問題が少なそうなSubversionの設定を考えてみました。現在これを社内標準として運用していますが、今のところ大きな問題は起きていません。 設定内容ですが、auto-propsとglobal-ignoresの設定です。各種ファイルについて、eol-style=nativeやkeywords=Idやsvn:mime-typeなどを設定します。 ちなみに、設定はsymfonyの公式オススメ設定「Symfony Repository Tips」から大半を流用しています。 設定内容 設定内容はsubversion-config.txtの通りです。同じ内容を以下に貼付けておきます。 [helpers] #diff-cmd = dif

  • $HOME/.ssh/configを活用していますか?

    こんにちは、hnwです。今更ながら自己分析すると、私はタイプ数を減らす工夫が好きなようです。今回は $HOME/.ssh/config ファイルについてのsshの非常に基的な話題です。もちろん今回もタイプ数を減らすことが主眼です。 $ man ssh_config 言いたいことは上記の man page を見てもらえば全部書いてあるんですが、案外読んでいない人もいるんでしょうか、 $HOME/.ssh/config に書けば省略できることを毎回タイプしている人を稀に見かけます。 $ ssh -l webmaster dev3.example.com もし上記のようなコマンドを打っている人が居たら、次の $HOME/.ssh/config を参考に、自分の環境に合わせて設定してみてください。 Host dev3 HostName dev3.example.com Host dev3-wm

  • 講習会「シェルスクリプト入門」を開催しました

    「シェルスクリプト入門」というタイトルで社内勉強会を開催しました。社内でアンケートを取ってみたところ、シェルスクリプトに苦手意識を持っている人がいるようです。「いやいや、普段のコマンドラインと大差ないよ」ということを伝えたくて、簡単な講習をしてみました。これで苦手意識が無くなってくれればいいんですが。 まとめ if文がわかればシェルスクリプトは完璧(?) 条件式の評価には[コマンド(又はtestコマンド) 変数展開はクオーティングに注意 比較するときは”x$hogehoge”を使えば万全 exit codeで他のコマンドと連携 0は正常終了、1〜255は異常終了 (more...)

  • いまさらxargsの便利さを主張してみる — ディノオープンラボラトリ

    タイトルの通りですが、xargsコマンドの便利さを紹介する記事を書いてみました。xargsは私が大好きなコマンドの一つで、標準入力から渡されたファイル名などを引数とみなして、別のコマンドの引数として起動するというものです。 例えばfindで見つけたファイルを全部削除したい場合、xargsなしでも下記のように書くことができます。

  • 革命の日々! @ITのmeminfoの見方の説明が完全に間違っている件について

    http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html Activeはページキャッシュや無名ページ(注3)のうち、最近利用したり、まだストレージとの同期が取れていない「捨てられない」ページです。Inactiveは、同じくページキャッシュや無名ページのうち、最後にアクセスされてからある程度時間がたち、ストレージとの同期も完了していて、すぐに捨てられるページです。よって、/proc/meminfoの出力でいうところの MemFreeとInactiveを足すことで確実に利用可能なメモリ量を算出することができます。 (実際に利用可能なメモリ量)≒(MemFree+Inactive) この値を利用し、一定量を下回らないようにするのが、簡単・確実なメモリ利用率監視法といえます。 間違ってる。完全に。 たぶんNTT OSSセンタとい

  • Linux で kernel panic に備えた設定をしてみるが・・・

    結構有名な設定項目なのでご存じの方は多いと思いますが、Linux は /proc/sys/kernel/*** をいぢくることで、実行中のカーネル・パラメーターを変更する事が可能です。「IBM Linuxを即席で管理する - Japan」あたりに解りやすい説明があります。以下引用。 Linuxでは、システムの実行中にカーネルやシステムをリブートすることなく管理者が非常に整然とした方法でカーネルを変更できるようになっています。それには/proc という仮想ファイルシステムが使用されます。 /proc ファイルシステムのごく基的な機能は、実行中のカーネルの状況を確認することです。この機能を利用することで、パフォーマンスの監視、システム情報の調査、システム構成の確認や変更といったことが可能になります。 このファイルシステムが仮想ファイルシステム と呼ばれるのは、それが当はファイルシステムでも

  • Linux チューニング - Ext3 のパフォーマンスを最大化させる

    じつは自宅サーバのロードアベレージが上がり続けています。分析の結果、ボトルネックは I/O 処理でした。CPU は Athlon64 X2 4400+ ですが、まだまだ当分この CPU で間に合いそうです。HDD は当時は 7200 回転で最速だった HITACHI Deskstar T7K250 SATA2 250GB を RAID1 構成にしたのですが、今思えば速度優先で RAID0 にしておけば良かったと少しだけ後悔。 I/O がボトルネックに成っている理由ですが、Drk7jp が公開しているサービスの全てがキャッシュファイルを利用した高速化手法を取っているのですが、単純にそれらファイルの write 処理が追いついていません。常に何らかのプロセスで I/O 待ち状態が発生しているような状況です。抜的な解決方法としては disk を高速なものに交換する以外ありません。 というわけで

  • /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど)

    前エントリーから一部の内容を分離して追加記事にしてみました。以下実施したメモリ増設の効果について。 ここ数ヶ月、自宅サーバの負荷がだんだんと上昇してきていて、そろそろ1台で高速にさばききる限界に近づいてきた感があったり。ここ数週間のロードアベレージはこんな感じ。グラフは× 100 の値になってます。CPU のコアが2個なんで、200 までは OK ということでまだ処理しきれているわけではあります。ちなみに mrtg グラフは瞬間値を示しているわけではなく平均値なので瞬間的にはもっと負荷が高いときとかあります。 でも月次処理が走るともっさり感満点。 ※緑:1分平均 / 青:15分平均 実は CPU の処理速度が追いついていないと言うより I/O 周りがボトルネックになっています。 ※緑:読取ブロック数 / 青:書込ブロック数 ということで、メモリを2GBプラスして、合計 4GB にして参照系

  • Linux の nice / renice コマンドを覚えた

    毎月15日は自宅サーバのバックアップが実行される日です。バックアップには20時間ほどもかかってしまうわけで、実は15日は凄くレスポンスが低下する日です。ロードは通常時の約3倍の3〜5程度になり、Disk I/O のパフォーマンスが極端に劣化します。 もっともその原因はバックアップの手法が悪いのです。 小さい HDD にバックアップしているために、元々の HDD を tar cvfz 使って圧縮しながらバックアップしているので CPU も凄く喰うんです。こりゃ HDD を増設して差分でバックアップする rsync 方式に変えなきゃ・・・と思いつつ今月もいつもの日が来てしまいました。 さて、今日はいつもにもまして shell での応答が遅いのでプロセスの優先度を変更することにしました。コマンドは覚えてなかったけど優先度設定コマンドがあることは知っていたので調べてみました。 renice - 実

  • syslog は I/O 負荷が高い → daemontool に移行しよう! :: Drk7jp

    qmail のログを daemontool 経由にする方法 まずは、qmail 1.03 内の FAQ テキストの 7.7 項をみる。ちょろっと情報が記載されています。 7.7. How do I avoid syslog? It chews up a lot of CPU time and isn't reliable. Answer: Install daemontools (http://pobox.com/~djb/daemontools.html). Make a /var/log/qmail directory, owned by qmaill, mode 2700. Do qmail-start ./Mailbox /usr/local/bin/accustamp \ | setuser qmaill /usr/local/bin/cyclog /var/log/qmail

  • IO Accounting 機能で I/O 負荷の高いプロセスを特定

    随分久々の Linux ネタです。以前にロードアベレージに関する考察などの記事も書きましたが、多くのサーバーサイドエンジニアはサーバ負荷と日々戦っていることかと思います。過去多くの場合、負荷の原因特定はおおよそ下記のような手順で分析をしていたことかと思います。※詳しい手順は別エントリとして記載予定。 top をみて上位に張り付いているプロセスを確認しつつ CPU or I/O のどちらが原因か判別 ps を使ってプロセスの状態を確認して(T),(D)の状態から CPU or I/O のどちらが原因か判別 vmstat で procs の r, b の数、swap の si, so の状態、I/O の bi, bo の状態を確認 iostat を使って disk の read/write の状態をさらに詳しく確認 sar を使って os の状態をさらに詳しく確認 おおよその原因特定から設定を

  • ロードアベレージに関する考察

    ここ最近ロードアベレージについて調べています。業の Oracle サーバのロードアベレージが最近高いのです。日の夜はまだまだ安定した値。下のグラフは loadavg x 100 のグラフ。 Dual Core Xeon が2枚のサーバなので一般的なロードアベレージの解釈からすると4以下なら安全圏。ここ最近は6〜8という数値が多いわけですが、実際の体感的なパフォーマンスがそれほど悪いるわけではなくと言うか全然重く無くってイマイチ良く判らない。CPU とか他の数値は至って安全圏のものばかり。仕方がないので kernel 2.6 のソースを眺める日々がここ数日。とにかく kernel まわりの記事を手当たり次第読んでみました。 マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー

  • 最近変更されたファイルをtailで表示する。 - こせきの技術日記

    ファイル名をワイルドカードで指定して、一番最近変更されたファイルをtailで表示する。 ls -t /path/to/prefix-*.log | head -1 | xargs tail -f ls -t /path/to/prefix-*.log | head -1 | xargs lessお好みで tail -f $(ls -t /path/to/prefix-*.log | head -1) less $(ls -t /path/to/prefix-*.log | head -1)ls -t でタイムスタンプ順。 (追記) システム管理に使えるファイル更新監視テク - 技術メモ帳 カレントディレクトリの更新ファイルを2行ずつ監視。 watch -n2 'tail -n2 `ls -t`'

    最近変更されたファイルをtailで表示する。 - こせきの技術日記
  • Apacheのアクセス制御をちゃんと理解する。 - こせきの技術日記

    Apacheの設定で Order deny,allowとか Satisfy anyとか、なんだか意味わからん人のために。僕はずっとわかってなかった。 基 Apacheのアクセス制御には、 ホストによる制御 (Order,Allow,Deny) ユーザ認証による制御 (Auth*, Require) の2通りがある。 Satisfyは、2通りあるアクセス制御の両方を満たす必要があるかどうかを決定する。デフォルトはSatisfy all。Satisfy anyなら、どちらか片方満たせばよい。 Order http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order Order deny,allowは、全てのホストからのアクセスを許可する。 Order allow,denyは、全てのホストからのアクセスを拒否する。 Order d

    Apacheのアクセス制御をちゃんと理解する。 - こせきの技術日記
  • 地雷だらけのrsyncを理解する。 - こせきの技術日記

    rsync -avz --exclude-from=pattern-file --delete SRC/ DEST SRCの末尾に/をつける。たいてい必要。 SRCスラッシュの有無は、mv SRC DEST と mv SRC/* DEST の違いと一緒。スラッシュの後ろに*が省略されているものと考える。 DESTのスラッシュの有無は関係なし。 --dry-run(-n)をつけて試す。 SRC、DESTともローカルのディレクトリを指定して試す。 DESTはまず空ディレクトリで試す。DESTが同期済みだと何が更新されるのか正確にわからないので。 --list-onlyをつけてファイル一覧を得る。 DESTを省略してファイル一覧を得る。 --list-onlyと同じ? --deleteはDESTのファイルを根こそぎ削除する可能性がある。注意。 --delete-excludedは使わない。--d

    地雷だらけのrsyncを理解する。 - こせきの技術日記
  • めんどうなのでディスク容量監視をワンライナーでcrontabに書いた - kazuhoのメモ置き場

    15 3 * * * perl -wle 'my $s = `/bin/df -k`; print $s if $s =~ m{^/dev/.* (9[0-9]|100)\%}m'df に限らず、コマンドの結果を正規表現で比較して問題があったらprint、ってのはcrontabで監視する時の基的なイディオム要出典。もちろん、backquoteじゃなくてパイプで繋いでもいい。

    めんどうなのでディスク容量監視をワンライナーでcrontabに書いた - kazuhoのメモ置き場
  • リモートサーバに接続できない場合の telnet による原因切り分け方法 - kazuhoのメモ置き場

    1) telnet host port して Escape character is ... と出た後、すぐ (あるいは少しして) 接続が切れる → 接続後 fork() 等で落ちている → サーバのメモリ不足やプロセスの無限増殖を疑う 2) telnet host port して Escape character is ... と出るが、その後何も起こらない → SYN_ACK が返ってきている → カーネルは生きている。ユーザーランドの負荷が極めて高い可能性 3) telnet host port して、すぐ connection refused と出る → RST が返ってきている → port が閉じている (サーバプロセスが落ちた?) か、または accept(2) していない 4) telnet host port して、しばらくたってから connectin refused

    リモートサーバに接続できない場合の telnet による原因切り分け方法 - kazuhoのメモ置き場
  • Linux で共有ライブラリをビルド&配布する際に気をつけること - kazuhoのメモ置き場

    Linux の共有ライブラリをリンクするためのハッシュテーブルは、従来、.hash というセクションに収められていたのが、CentOS 5.0 や Fedora Core 6 以降? といった新しい環境では、.gnu.hash という新しいセクションに収められるようになった。 で、後者の環境で何も考えずに共有ライブラリをビルドすると、.gnu.hash セクションのみをもつものができあがるんだけど、それを Debian Etch とかに持っていくと、dlopen した際に SIGFPE で落ちてしまう。 問題を回避するためには、リンカに --hash-style=both というオプションを渡してやれば、両方のセクションが作成されるので、この問題を回避できる。 Q4M もこの問題にはまって、0.8.2 をリリースすることになりました。幸い問題を発見した人が id:hirose31 さん (

    Linux で共有ライブラリをビルド&配布する際に気をつけること - kazuhoのメモ置き場
  • 死んだプロセスのスタックトレースを自動収集するデーモンを書いた (そして、その出力を開発者に送ってあげると喜ばれるよという話) - kazuhoのメモ置き場

    死んだプロセス (あるいは kill したプロセス) の core イメージから自動的にスタックトレースを収集するデーモンを書いたので、これをセットアップしてサーバにインストールしとくといいかもです (kaztools/bt_cores at master · kazuho/kaztools · GitHub)。Linux のみ対応*1。使い方は bt_cores --help とするか、perl Makefile.PL && make install して man bt_cores。 具体的にいうと、Q4M とか Incline とか kazuho product が落ちたり固まったりしたらスタックトレース送ってくれると、私がうれしいです (古いバージョンのスタックトレースだととても悲しいです)。コアファイルは内部データがいろいろ入ってるから外部の人には見せられないけど、スタックトレース

    死んだプロセスのスタックトレースを自動収集するデーモンを書いた (そして、その出力を開発者に送ってあげると喜ばれるよという話) - kazuhoのメモ置き場
  • linuxで httpd が使ってるメモリ総量を調べる話 - kazuhoのメモ置き場

    Perl等のLLでウェブアプリケーションサーバを書いていると、普通はマルチプロセスモデル (apache なら prefork とか) で運用することになると思う。で、それらがどれだけメモリを使っているか、っていうのはチューニングにおいて重要になってきたりする (んじゃないかと思う) けど、そもそもメモリの総使用量をどうやって測定するのか。 20:20追記: PSSを使ってワンライナーで測定するのが簡単 (コメント欄参照)。kosakiさんありがとうございます。 $ sudo perl -le 'for my $p (@ARGV) { open my $fh, "< /proc/$p/smaps" or die $!; map { /^Pss:\s*(\d+)/i and $s += $1 } <$fh> } print $s' `pgrep plackup` 914325以下は初回投稿時

    linuxで httpd が使ってるメモリ総量を調べる話 - kazuhoのメモ置き場
  • 「Linux-DBシステム構築/運用入門」がすごい - あなたのシステム、ガラパゴス化していませんか? - kazuhoのメモ置き場

    松信さんがやってくれました。 ずいぶん前からデータベースの「正しい」構築と運用方法についてまとめたはないかなーと思ってました。自分はこれまで、様々なネットワークアプリケーションのプログラミングやデータベースの設計、チューニングを行ってきています*1が、問題が解決できたようには見えても、果たしてそれが最適な解決策だったのか不安に感じることがありました。それは、体系的な知識に欠けているからです。だから、網羅的な教科書がほしいなぁって思ってたんです。 とあるインターネットでこの前、松信さんから「いま書いてる」って話を聞いて、一部を見せていただいたりしたんですが、つい昨日、手元に届きました。やったね☆ 名前は「Linux-DBシステム構築/運用入門」。「入門」と銘打たれているものの、基礎的な知識から、なぜそうなるのか、どう応用すればいいのか、といった点まで広くカバーしている*2、全方位的な隙のな

    「Linux-DBシステム構築/運用入門」がすごい - あなたのシステム、ガラパゴス化していませんか? - kazuhoのメモ置き場
  • Linuxで3万(10万)プロセスを同時に起動させてみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といっても、きちんとした検証をしたわけではないので、あくまで「こういう環境でこういう事をやるとこうなる」という参考程度のものと理解してい頂ければ幸いです。 Linux上でプロセスは同時に何個起動できるのか 数年前にC10K問題が流行りました。これは、簡単に言うと、万のオーダーでプロセスを立ち上げる事になると、現状のOSではそれを想定した設計になっていないためまともに動かなくなる、といった問題でした。 だったら、「10万プロセス位を同時に立ち上げてみて、どうなるか試してみようぜ!」と思い、会社のエンジニアと一緒に試してみました。検証環境は、メモリ48GでCPUはHyperThreading込で24コアです。そこで動いていたOSはDebianでL

    Linuxで3万(10万)プロセスを同時に起動させてみた
  • Webサーバのマルチスレッドでの実装における優位性をLinux Kernel 3.3のソースから読み解く

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 表題の通り、現行のカーネルの実装において、マルチスレッドとマルチプロセスでの実装の優位性はどういう所にあるのかを知りたい、というのが今回の調査の意図だ。 そのために、前提知識としてマルチスレッドとマルチプロセスの特徴について、カーネルのソースを見ていきたいと思う。カーネルの海に飛び込むには、やはり最新のLinux Kernel 3.3のソースを選択することにした。前置きの段階で少し長くなってしまいそうだ。ではカーネルの海に飛び込みたいと思う。 とはいっても、まずは最初の一歩が必要なので、当たりをつけようと思う。キーワードは、 マルチスレッド マルチプロセス コンテキストスイッチ メモリ空間の共有 TLB(トランスレーション・ルックアサイド・バ

    Webサーバのマルチスレッドでの実装における優位性をLinux Kernel 3.3のソースから読み解く
  • Linux上でプロセス毎のI/Oを調査するツール piotop.pl をさらに改造

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 topコマンドのように、実行中のプロセスとプロセスのreadとwriteのI/OをBpsでリアルタイムで表示するツールpiotop.plをPerlの復習がてら作ってみました。さらに、それをOpenVZやVirtuozzo+Plesk+Apacheの環境で、どのコンテナのどのドメインのどのCGIやPHPがどの程度I/Oを使っているのか、まで調べることができるようにしました。 はじめに vmstatやiostat等が個人的にはあまり見やすくないのと、Webサーバ上でトラフィックだけでなく、実際にHDDとのI/Oがどの程度なのかをプロセス単位で調べたい、というのがもともとの動機です。トラフィックが少なくても、サーバ内部で猛烈にI/Oするようなプログ

    Linux上でプロセス毎のI/Oを調査するツール piotop.pl をさらに改造
  • RHEL6のls -l のパーミッション の ピリオド "." って何よ - harry’s memorandum

    RHEL6から ls -l を実行すると パーミッションのフォーマット に ピリオド "." がつくことがあります。すげー気になります。 $ env LANG=C ls -l /etc/resolv.conf /etc/hosts -rw-r--r-- 1 root root 350 Apr 6 19:12 /etc/hosts -rw-r--r--. 1 root root 45 Apr 6 14:29 /etc/resolv.confイラっとしてきたので coreutils-8.4/src/ls.c を見てみました。 /* Compute the mode string, except remove the trailing space if no file in this directory has an ACL or SELinux security context. */ if

    RHEL6のls -l のパーミッション の ピリオド "." って何よ - harry’s memorandum
  • Linuxで連番するおさらい - harry’s memorandum

    とにかく連番で出力させたい、っていうたわいもない話なんですが。 rubyperlが使えれば、適当にワンライナー書けばいいんですけど.. $ ruby -e '(1..5).each {|n| printf("%05g\n",n)}' 00001 00002 00003 00004 00005 とはいえ、シェルでなんとかして、と言われることも多々あるので。 seq やっぱりseqが便利ですね。 $ seq 5 1 2 3 4 5 組み合わせれば0パディングも余裕。まじ余裕。 $ seq 3 |\ > while read n > do > printf "%02g\n" $n > done 01 02 03 seqのオプションでもパディング。こっちの方がいいじゃないか。 # -w, --equal-width # 桁数を揃えるために (先頭を) 0 で埋める。 $ seq -w 5 10

    Linuxで連番するおさらい - harry’s memorandum
  • Bashの変数パラメータ展開はやっぱし便利 - harry’s memorandum

    パターン照合演算子ってやつは便利だなーとしみじみ思ったので。 バイト数だしたり $ x="/usr/share/apt/ubuntu-archive.gpg" $ echo ${#x} 33 切り出したり (${parameter:offset:length}) $ x="/usr/share/apt/ubuntu-archive.gpg" $ echo ${x:1:3} ${x:5:5} ${x:11:3} ${x:15:18} usr share apt ubuntu-archive.gpg 置換したりできる。 x="sumomo mo momo mo momo no uchi" $ echo $x sumomo mo momo mo momo no uchi $ echo ${x//momo/} su mo mo no uchi $ echo ${x//momo/banana} su

    Bashの変数パラメータ展開はやっぱし便利 - harry’s memorandum
  • ワンライナーでtarバックアップ - harry’s memorandum

    Sourceforge.jp Magazineで連載?中のOne-Linerです。 忘れないように自分が昔から使っているのと新しく覚えたものを備忘録。 http://sourceforge.jp/magazine/09/01/14/0134202 Tarアーカイブとバックアップ 普通のtarとgzip $ tar cvf dir.tar ./dir $ gzip -1 dir.tar GNUtarでtgz $ tar cvzf dir.tgz ./dir GNUtarがない場合をパイプを使って。option '-[1-9]' は 圧縮時間を速くするか圧縮率を上げるか。 $ tar cf - ./dir | gzip -1 > dir.tar.gz もちろんgzipではなく高圧縮のbzip2でもOK. $ tar cf - ./dir | bzip2 -9 > dir.tar.bz2 もちろ

    ワンライナーでtarバックアップ - harry’s memorandum
  • オレオレaliasやシェル関数のあれこれ - harry’s memorandum

    よく忘れるからメモ。 仕事で古いUNIXを使うので、どうしても手が'more'と覚えてしまっているから仕方がない。 $ alias more='less' バックアップするときのシェルの関数。個人的には便利。 $ backup(){ cp -pr $1{,.`date +%Y-%m-%dT%H:%M:%S`}; } $ backup a.c $ ls a.c* a.c a.c.2012-09-17T00:46:46 空ディレクトリを削除するワンライナー。ただaliasにしただけ。 $ alias rmdir_r='find . -depth -type d | xargs rmdir 2> /dev/null' 空ディレクトリを削除するワンライナー。Linuxのfindutilsならこっちの方がいいのかもしれない。 $ alias rmdir_r='find . -type d -empt

    オレオレaliasやシェル関数のあれこれ - harry’s memorandum
  • Bashの変数パラメータ展開のまとめ - harry’s memorandum

    Bashのパラメータ展開はすぐに忘れてしまうのでメモ。 変数の文字数 ${#parameter}で変数の文字数を調べることができます。 name=/var/log/boot.log echo ${#name} 17 wcやawkコマンドを使う方法がありますがスマートではありません。*1 $ n=`echo $name | wc -c`; echo $(($n-1)) 17 $ echo $name | awk '{ print length($0)}' 17 配列も同じように配列数を調べることができます。 $ array=(a b c d e) $ echo ${array[0]} a $ echo ${#array[@]} 5 変数パラメータ展開 変数を切り出せます。ファイル名やディレクトリ名を簡単に切り出すことができます。 $ name=/var/log/boot.log $ echo

    Bashの変数パラメータ展開のまとめ - harry’s memorandum
  • 知らなかったyesコマンドの真の力 - harry’s memorandum

    yesコマンドとは? 'YES' - 妖精がみえてしまうジョンアンダーソンのプログレッシブバンドのことではありません。UNIX/Linux の yes コマンドを少しだけ語ってみたいと思います。 yesコマンドってなんですか?という人はまずUNIX/Linuxのターミナルで'yes'と入力してみましょう。 $ yes y y y^Cy がひたすら続きます。引数に文字列を渡せばその文字列をひたすら吐き出します。 $ yes "Cirque du Soleil" Cirque du Soleil Cirque du Soleil Cirque du Soleil Cirque du Soleil^Cこれ意味あんの?と思いたくなります。では何に使えるのでしょう? そうターミナルで対話的に行うときに なんと あの y を入力してくれるのです。 yesの例 まずテストファイル作成 $ for i i

    知らなかったyesコマンドの真の力 - harry’s memorandum
  • つい最近知ったcrontabのマクロ - harry’s memorandum

    cronの語源がギリシャ神話の時間の神クロノス(chronos/kronos)だったとはマジに知らなかった。 語源は別にしてcrontabマクロというのがあるんですね。こんな感じに@rebootとするとOS起動時に test.pl を実行してくれる。/etc/rc.localに書いておくようなものですね。 $ crontab -l @reboot /home/user/test.pl http://en.wikipedia.org/wiki/Cron#Predefined_scheduling_definitions Entry Description Equivalent To @yearly (or @annually) Run once a year 0 0 1 1 * @monthly Run once a month 0 0 1 * * @weekly Run once a we

    つい最近知ったcrontabのマクロ - harry’s memorandum
  • 最近知ったLinux/UNIXの小技 - harry’s memorandum

    最近知って結構ショックを受けた。 touch hoge.txt と似たような機能。*1 $ > hoge.txt $ ls -l hoge.txt -rw-r--r-- 1 root root 0 Jul 10 03:15 hoge.txt lessでtail -f ができる。 $ sudo less +F /var/log/messages SSHでリモートサーバに対して色々 リモート先のファイルをsortして比較。パスフレーズなしにするか、ssh-agentを使用するかしてください。 $ diff <(sort /home/user/.bashrc) <(ssh user@hostname "sort /home/user/.bashrc") リモートサーバのファイルを編集 $ vim scp://user@hostname//home/user/.bashrc sambaのコマンドで

    最近知ったLinux/UNIXの小技 - harry’s memorandum
  • dstatの万能感を満喫するためにfluentdにログを飛ばしてみた - As a Futurist...

    @hirose31 さんが突如として流行らせた感のある dstat ですが、「乗るしかない、このビッグウェーブに!」ということで python の勉強ついでに触ってみました。 dstat の万能感がハンパない – (ひ)メモ dstat の結果を fluentd に投げる やったこととしては、csv に吐き出す部分をパクってそのまま fluend に投げる様にしてみました。 fluent-logger · b6dcb12 · riywo/dstat これで、dstat の起動オプションに--fluentdというのを与えると、ローカルの TCP:24224 で待ち受けている fluentd に対して「debug.*」の形で毎秒ログを送りつけることができます。(fluentd の接続先とかタグとかは誰か調整できるようにして下さい。。。) 2012-03-03 03:36:43 +0900 de

    dstatの万能感を満喫するためにfluentdにログを飛ばしてみた - As a Futurist...
  • 若者がパッケージ管理について思うことの今の結論 - As a Futurist...

    先日エントリを書いたら、各方面から「長い」「タイトルが意味不明」「若いっていいよね」とたくさんの dis を頂きありがとうございました。 そういえば、長くなりすぎて今のところの自分の結論書くのも忘れてたので、頂いたアドバイスも交えてもうちょっと書きます。 結論:あるサーバの正しい状態が定義できれば管理方法は問わない というわけで、パッケージ管理と呼んでいるものの外側から、ともかく正しい状態というのを何かしら定義することができれば、別にパッケージ管理の手法は問わないし何種類も組み合わせていいと思ってます。Touryo という自作のツールはそういう思想も受け入れていて、一部そういう管理を試しているところです。 抽象的で分かりにくいのでもうちょっと具体化すると、例えば rpm でのライブラリのパッケージ管理と cpan による perl モジュールのパッケージ管理は、XS などがある場合に完全に

    若者がパッケージ管理について思うことの今の結論 - As a Futurist...
  • ifstatって便利そうなの見つけたのでついでに*statを紹介 - As a Futurist...

    今更感もありますがすごい便利そうなツール発見。ネットワークインターフェイスのトラフィックを簡単にモニタリングできるツール。 ifstat CentOS とかだったら rpmforge にあるみたいなので、こんな感じで。(レポジトリ設定してなければ適当に) yum install --disablerepo=* --enablerepo=rpmforge ifstat チーミングしてる環境で出してみるとこんな感じ。-iで並び順も指定できたり、-bで Kbps にできる。vmstatと違って-tで timestamp も出せるのでこれ単体で便利に使えそうですね。ちなみに Linux の場合/proc/net/devを使ってるそうです。 *stat 系のツール 便利ですよね。パッとサーバに入って今起きている問題を分析するのにこれらのツールを使うのは有用です。top しか見ない人は覚えておくといい

    ifstatって便利そうなの見つけたのでついでに*statを紹介 - As a Futurist...
  • GNU Parallelがすごすぎて生きるのがつらい

    皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと

    GNU Parallelがすごすぎて生きるのがつらい
  • tailコマンドって-c使うと超速い - As a Futurist...

    Twitter でつぶやいたら意外と知られて無かったので記事にしておきます。 Linux とかで巨大なログファイルとかを扱うときに、head や tail というコマンドで先頭から何行とか 末尾から何行を見たい時があると思います。 例えばアクセスログで末尾から 10000000 行目辺りをみたいとかいうときに $ tail -n 10000000 access_log | head とかするとかなり遅いと思います。これはログの後ろの方から読み込みながら 行数を計算しているからで、10000000 行分数えないとどこから表示すればいいのかわからないので なかなか結果が返ってこなくてヤキモキしてしまいます。 こんなときに、-cというオプションを使うと超高速で結果が返ってきます。-cというのは -c, --bytes=N output the last N bytes とある様に、ファイルの末尾

    tailコマンドって-c使うと超速い - As a Futurist...
  • Linuxで使える10の便利な生産性ツール - YAMDAS現更新履歴

    Daily Artisan - 10 Handy Productivity Tools in Linux 生産性を高める系のツール、というのはちょっと盲点だった。リストに挙げられているのは以下の11個のソフトウェア。 Conduit(Gnome用同期ツール) FreeMind(マインドマップ作成) Tilda(ターミナルエミュレータ) Launchy(コマンド型ランチャー) StarDict(辞書ソフト) Recoll(検索ツール) Pidgin(マルチプロトコル対応IMクライアント) Osmo(個人情報管理ツール) Zim(デスクトップWiki) BasKet(メモ管理ツール) GImageView(画像ビューワ) ちゃんと使ったことがあるのは FreeMind くらいか。ネタ元は LWN.net

    Linuxで使える10の便利な生産性ツール - YAMDAS現更新履歴
  • http://blog.inouetakuya.info/entry/20130203/1359892006

    http://blog.inouetakuya.info/entry/20130203/1359892006
  • 初心者の頃に知っておきたかった rpm と yum の違いと使い分け

  • Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん

    Linuxでテキストデータを扱うときに、コマンドをパイプで繋げるだけでいろいろな処理ができて面白いのですが、綺麗に整理されていない気がするのでまとめてみます。ここでは、cat, paste, join, grep, head, tail, cut, awk, sed, tr, sort, uniq, wc を取り上げます。 ファイルを縦に結合 ファイルを縦に結合します。 コマンド 説明 cat file1 file2 ... file1, file2, ... を縦に結合 cat file | ... としてファイルの中身をパイプに流すのにもよく使います。 ファイルを横に結合 ファイルを横に結合します。あまり使わない?*1 コマンド 説明 paste file1 file2 .. file1, file2, ... を横に結合 join file1 file2 file1 と file2

    Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん
  • sanonosa システム管理コラム集: アプリケーションをインストールする方法の比較

    ※一番下に補足を加えました。(2007/5/13) 昔(WEBが登場する10年ほど前くらいまで)はUNIXシステムにアプリケーションをインストールする際はソースコードを持ってきてコンパイルするのが当たり前でしたが、現在は主要アプリケーションがパッケージ化されインストールが非常に簡単になりました。しかし、にも関らずプロのシステム管理の現場では未だに相変わらずアプリケーションをコンパイルして導入することが多いです。そこで今回はアプリケーションのインストール方法の比較をしてみたいと思います。 【yumやrpmなどでインストール】 Redhat系のLinuxでは他の人が作ってくれたパッケージを使ってアプリケーションをインストールすることができます。これらを利用してインストールするメリットは導入、アップデート、アンインストールが簡単ということに尽きます。例えば # yum install httpd

    sanonosa システム管理コラム集: アプリケーションをインストールする方法の比較
  • サーバ間の設定ファイル差異を比較するスクリプト - sanonosa システム管理コラム集

    サーバ台数が増えてくると、例えば同じ種類のサーバをスケールアウトしているとき、1台だけ設定ミスがあったとしてもなかなか気付きづらくなります。サービスの安定稼動のためにはこういった些細なミスは完全に潰しておく必要があります。そこで今回はサーバ間の設定ファイル差異を比較するスクリプトを作りましたのでご紹介してみます。 【前準備】 まずはこちらでも記したような方法で、パスワードなしで各サーバにSSH接続できるようにしておいてください。 【サーバ間の設定ファイル差異を比較するスクリプト】 下記スクリプトをどこかに保存してください。ファイル名は便宜上「filediff.sh」とでもしておきます。そして、今回比較するファイル名を羅列し、かつサーバ番号(下記の例だと10.0.0.1の設定ファイルを10.0.0.2~10の設定ファイルと比較しています)を書き換えてください。 $ cat > filedif

    サーバ間の設定ファイル差異を比較するスクリプト - sanonosa システム管理コラム集
  • WEB上からrsyncを実行する方法 - sanonosa システム管理コラム集

    各サーバ群にソースコードを配信するためにrsyncを使っているところも多いと思います。この操作をWEB上から行えるようになれば、例えばデザイナーがちょっとした画像データを配信するといった場面などで便利そうです。そこで今回はrsyncをWEB上から実行する方法について記してみたいと思います。 【ハマりどころ確認】 WEB上からrsyncを実行するのって、簡単に見えて実はちょっと難しいのです。ハマりどころは2つあります。それは (1) rsyncを実行するユーザがパスワードなしで配信先サーバにSSH接続できるようにしておかなければならない。 (2) 配信先サーバでは、rsyncを実行するユーザと同じ名前のユーザで、該当ファイルやディレクトリの書き込み/編集権限を持っていなければならない。 というものです。 (1)については、こちらでも記したような方法で、パスワードなしで他のサーバにSSH接続で

    WEB上からrsyncを実行する方法 - sanonosa システム管理コラム集
  • 複数WEBサーバへの最新ソースコード配信方法 - sanonosa システム管理コラム集

    WEBサーバを数台用意して負荷分散している会社が多いと思います。このような場合必ず悩むのが、どうやって複数WEBサーバへ最新ソースコードを配信するかだと思います。そこで今回はソースコードを複数サーバにコピーする方法について述べてみたいと思います。 【その前にネットワーク確認】 まずはネットワークを確認したいと思います。ほとんどの会社は図1のような感じだと思いますが、安全性を考えればできれば図2のレベルまで持って行きたいところです。 図1 図2 【ステージングサーバを用意しよう】 次に押さえたいのがステージングサーバです。小さな会社ではWEB1にまずは最新ソースを置いて、そこから他のサーバにコピーする方法を取っているかもしれません。しかしいろいろな意味で配信専用のステージングサーバを別途用意することをお勧めします。ステージングサーバを用意することのメリットは 1.ステージングサーバもWEBサ

    複数WEBサーバへの最新ソースコード配信方法 - sanonosa システム管理コラム集
  • サーバをシャットダウンする作法(UNIX系OS編) - sanonosa システム管理コラム集

    サーバのシャットダウンの仕方で、その人がどの程度の力量を持っているかなんとなくわかってしまいます。それくらいサーバのシャットダウンは奥深いです。そこで今回はサーバをシャットダウンする作法について考えてみたいと思います。 【初級:いきなりシャットダウンしてしまう】 サーバ管理初心者がサーバをシャットダウンするシーンを見ていると、rootでログインしたかと思ったらいきなりshutdownと打ち始めました。個人PCならまだしも、サーバでそれをやるのは危険ですよね。誰かそのサーバ上で作業しているかもしれないし。 【中級:上がっているサービス・プロセス・TCPコネクションなどを確認してシャットダウン】 サーバ管理中級者になると、サーバをシャットダウンする際は、まずはTCPコネクションがないかなどを確認してから、立ち上がっているサービスやプロセスを全て落とし、その後シャットダウンします。慣れているので

    サーバをシャットダウンする作法(UNIX系OS編) - sanonosa システム管理コラム集
  • sanonosa システム管理コラム集: コマンドリファレンス集

    インフラエンジニアの教科書」シリーズや「クラウドエンジニアの教科書」などの著者。現在(株)ハートビーツ勤務。LINE社元創業メンバー。K-POP/韓国語/お酒/サイゼリヤワイン好き。

    sanonosa システム管理コラム集: コマンドリファレンス集
  • 特定の所有者のファイルだけ所有者を変更 - 技術メモ帳

    今まで find と組み合わせてたのだけれども、 GNU chown だと --from というオプションがあることにさっき気づいた。 以下はカレントディレクトリ以下のファイルで 所有者が from_user:from_group なファイルのみ所有者を変更するためのコマンド。 -c オプションを付けて処理の様子を画面に出した方が良いかも。 $ chown -R --from=from_user:from_group to_user:to_group ./ 今までのやり方だと、だいたい以下のような感じ。 オプションとかは適当なのでおそらく動作しない。 最近マスコミで流行ってる、画面はイメージです メソッドを使用した。 $ find . -type f -user from_user:from_group | xargs chown to_user:to_group 実にどうでも良いが、マス

  • lessでtail -f - 技術メモ帳

    less 起動中に、F と大文字で入力する事で、 tail -f のような挙動になるらしい。 知らなかった。 いつでも気軽に直前のログを見に戻る事が出来るのが良いね。 Ctrl + C で元のモードに戻る。 lessの場合 less +内部コマンド名 としておく事で起動時に内部コマンドを実行できるので とりあえず、ltailf という名前でエイリアスしておいた。 alias ltailf='less +F'

  • 技術メモ帳 - 二つのファイルに共通する行をエレガントに抽出

    id:parasporospa さんの uniq -d と uniq -u についての記事を見た。 それぞれ、重複する行、ユニークな行を抽出するオプションなのだが、 それらを利用したおもろいTipsが紹介されている。 uniq の -d と -u - メモ帳 # a, b に共通な行を抜き出す cat a b | sort | uniq -d > common # a にだけ含まれる行を抜き出す cat a b | sort | uniq > all cat a all | sort | uniq -u >only_in_a (中略) 存在意義がわからなかったオプションの使い道を見つけたときは妙に感動する。 僕が、uniq のこれらのオプションを知ったのは、 無能上司に教えてもらったときだ。懐かしい。 uniq -c に鳥肌が立ったのが昨日のように思い出される。 通称アルファギークの Da

  • システム管理に使えるファイル更新監視テク - 技術メモ帳

    システム管理とかしてると、特定のディレクトリ以下のファイルの更新を 調べたいときとかっていうのはわりとある。 どんなファイルが更新されてどういった内容に変化したのかを見える化。 またしても Linux / watch ネタだ。FreeBSDはportsで、mac osx(darwin)は どこかで公開されてたdmgを使ってる。 中毒性があるので未成年の使用は禁止されている。 カレントディレクトリ内のファイルを 最近更新があったファイルを上の方に表示し、 最終行2行を表示し続けるもの。 $ watch -n2 'tail -n2 `ls -t`' Every 2s: tail -n2 `ls -t` Wed Feb 28 01:04:40 2007 ==> test2.txt <== unko ==> test4.txt <== aiueoadfsaf ==> test1.txt <== e

  • topコマンドの出力をカラフルにする - 技術メモ帳

    ずっと知らなかった。。 こういったずっと前から知ってるコマンドが カラフルになると感動する。DDI。 やり方は、起動中にzコマンドを入力するだけ。 他にもどこをハイライトするか、など詳細に設定できる。 $ top # 起動中にzと入力 設定し終わったら、W と大文字で入力する事で $HOME/.toprc に現在の設定が保存される。 Linux とかにはいってる procps パッケージの top コマンドだけです。 参考: http://www.linux.or.jp/JM/html/procps/man1/top.1.html

  • 技術メモ帳 - 単語抽出するちょっとしたテクニック

    shell のちょっとしたテクニック - odz buffer odzさんのところで単語の出現頻度を調べるためのワンライナーが紹介されている。 単語抽出についてはいくつかやり方があるので紹介する。 特に egrep -o は非常に実用的。 もちろん、この話はリンク先において主題ではない。 俺のただの自己満足。 tr -cs で単語抽出 $ tr -cs 'a-zA-Z' '\n' < ./.zshrc 上記コマンドで、a-zA-Zのみで構成される文字列を抽出できる。 -c オプションで、'a-zA-Z' の補集合(以外)を '\n' に変換し、 -s オプションで、最後の引数で指定される要素の重複を除去している。すなわち '\n' の連続を除去している。 grep -o で単語抽出 grepには、( -o、--only-matching ) オプションというのがある。 これは、指定された正

  • 技術メモ帳 - 拡張子ごとにコマンドを対応づける

    拡張子ごとにコマンドを対応づける事が出来る Suffix Alias という機能が zsh 4.2系から実装されていたらしい。 知らなかった。 どんな事が出来るのかというと たとえば、 alias -s txt=cat とした場合、 以下のようにするだけで、 % ./file.txt 先ほど設定したコマンドが自動で実行されるようになる。 % cat ./file.txt あとはもうアイデアしだいだが、 拡張子が *.log のときは、tail -f するなんて事も出来る。 alias -s log='tail -f' 参考: http://zshwiki.org/home/examples/aliassuffix http://slashdot.jp/articles/04/03/27/2333234.shtml?topic=80 http://zsh.dotsrc.org/Doc/Rel

  • xargsコマンドを使って指定したコマンドを並列実行させる - 技術メモ帳

    あまり知られていないが、GNUのxargsコマンドには、 プロセスの最大数を設定できるオプションというのが用意されている。 コレを使って、プロセスを並列実行させてみよう。 xargs --max-procs=MAX-PROCS -P MAX-PROCS command MAX-PROCSに数字を指定すると、 最大で、その数だけ command プロセスを生成する。 デフォルトは、1プロセスだけになっている。 いくつか例を交えて説明する。 サンプルとして、以下のようにURLが行ごとに記述されたファイルを元に curlをxargsで並列実行して、HTMLデータを取得してみよう。 $ cat ./url_list.txt http://www.google.co.jp/ http://www.yahoo.co.jp/ http://b.hatena.ne.jp/ まず、普通にxargsを使ってc

  • 定期的にコマンドを実行しその出力の変化を監視する - 技術メモ帳

    以前に、watch コマンドという 指定されたコマンドを定期的に実行し、 フルスクリーンで表示してくれるコマンドがあるという事を書いた。 http://d.hatena.ne.jp/lurker/20060716/1153056030 実は、--differences とオプションを付加する事によって、 直前の出力結果との差分をハイライト表示してくれるらしい。 知らなかった。コレは便利だ。 正直 grep -o を知ったときぐらい感動した。 以下のように入力してみるとどうなるのかが わかっていただけると思う。 ちなみにこれは、1秒おきに、dateコマンドを実行するというもの。 $ watch -n 1 --differences date さらに、--differences=cumulative と付加すると 起動してからのすべての変更部分がハイライトされるようだ。 $ watch -n

  • 技術メモ帳: [unix]複数のファイルの名前をまとめて変更する

    複数のファイルの名前を変更する際に、 便利なコマンドというものがある。 いくつかご紹介させていただこう。 カレントディレクトリにあるファイルの名前を、 たとえば、*.html を *.htm と名前を変更するという課題に対し どのぐらいエレガントに書けるかというのを比較してみる。 まず、普通にやったらどうだろう。 おそらく、for文 をつかうことだろう。 for file in *.html do base=`basename $file .html` mv $base.html $base.htm; done; zshだともうちょっとスマートにかけて、 for file in *.html do mv $file:r.html $file:r.html; done; こんな具合。 for文 が嫌いなネット右翼のために、 xargs を使ってこの問題を解いてみよう。 ls -1 *.htm

  • 技術メモ帳 - pgrep, pkill を使用してプロセスを殺す

    最近、会社でシェルの操作方法について教えているのだが、 pgrep / pkill / skill / pidof といった 便利なプロセス操作系コマンドを知らない人が実に多い。 プロセスを殺すというのは、よくある作業なので 今回はコレについて書いてみる。 たとえば、これらのコマンドを知らない人が、 指定した名前のプロセスを kill する手順はだいたい 以下のようなものになることだろう。 $ ps aux | grep プロセス名 | grep -v 'grep' # コマンドの出力結果から pid を目で確認 12345 ... .. hoge .. .. $ kill 12345 この作業は非常に面倒で退屈だ。 もし殺さなければならないプロセスがたくさんあったときは どうするのだろうか。 おまけに、grep コマンド自身が候補に含まれてしまう事があるのだが、 grep -v grep

  • Geekなぺーじ:UNIX哲学の基本原則

    「Basics of the Unix Philosophy」でUNIX哲学の基原則がまとめられています。 UNIXの設計思想として紹介されていますが、多くは普通のソフトウェアを設計する場合にもあてはまると思われます。 1. Rule of Modularity(モジュール性): きれいなインターフェースで接続された、簡潔な部品を書きましょう。 2. Rule of Clarity(明瞭さ): 明瞭さは賢さよりも良いです。 3. Rule of Composition(構成): 他のプログラムと接続できるようにプログラムを設計しましょう。 4. Rule of Separation(分離): ポリシーとメカニズムを分離しましょう。エンジンとインターフェースを分離しましょう。 5. Rule of Simplicity(単純性): 単純化された設計をしましょう。複雑さは必要な時だけ追加しま

  • UNIXの歴史:Geekなぺーじ

    TOP > ブログ > UNIXの歴史 UNIXの歴史 2006/11/8 UNIX系OSの歴史と分岐を表している図です。 History of UNIX flowchart http://upload.wikimedia.org/wikipedia/commons/5/50/Unix_history-simple.png UNIX history (凄く細かい) http://www.levenez.com/unix/history.html Linux http://www.kde-files.org/content/files/44218-linuxdistrotimeline-6.8.2.png (消えてた 2009.6.9時点) http://commons.wikimedia.org/wiki/File:LinuxDistroTimeline.png MacosX入り http

  • LinuxとWindowsのデバイスドライバ アーキテクチャ比較:Geekなぺーじ

    「A Comparison of the Linux and Windows Device Driver Architectures (ACM SIGOPS Operating Systems Review, Volume 38, Issue 2, April 2004)」 という論文がありました。 Linux 2.4とWindows XPのデバイスドライバアーキテクチャを比較しています。 論文中からパッと見てすぐわかりそうな図だけ引用してみました。 筆者が論文を公開しており、誰でも読める状態になっているようなので、以下の図を見て興味が沸いた方は是非読んでみる事をお勧めいたします。 全体像

  • Geekなぺーじ:10のUNIX小技

    IBMのサイトで「Learn 10 good UNIX usage habits」という記事が発表されていました。 面白かったので要約してみました。 変な部分があるかも知れないので詳細は原文をご覧下さい。 原文とは一部異なります。 ページスペースなどの関係でコマンド引数などを短く省略しています。 原文のサンプルコマンドが間違っていたりするので、修正している部分もあります。 原文を修正しているのは、tar.gzをzオプションを使わないでxfvしようとしているところと、xargsにlsではなくls -lを渡している部分です。 あと、説明文を短くしてしまっています。 1. ディレクトリの作成 良く使うコマンドの一つであるmkdirですが、面倒臭い使い方をしていませんか? 悪い例 ~/ $ mkdir a ~/ $ cd a ~/a $ mkdir b ~/a $ cd b ~/a/b/ $ m

  • 使えるとちょっと便利なSSHのTIPS

    こんにちは、牧野です。久々の、9か月以上ぶりのブログです。。 仕事では、ここ1年近くずっっとインフラ関係のことをやっていました。 今日は、SSHに関するTIPSを紹介します。 1. 特定のサーバーにSSHログインする時に、特定の設定を使用する ホームディレクトリ/.ssh/configファイルに設定を書いておくと、特定のサーバーにログインする時に、自動的に特定の設定を使うようにできます。 SSHのオプションをサーバーによって分けたい時に入力が楽になります。 以下は、xxx.yyy.zzz.aaaでアクセスする時に使う秘密鍵をid_rsa_testに設定しています。 .ssh/config Host xxx.yyy.zzz.aaa IdentityFile /home/asial/.ssh/id_rsa_test 2. ホストキーをチェックしないようにする LinuxからサーバーにSSH接続

    使えるとちょっと便利なSSHのTIPS
  • サーバの基本的な設定ファイルとCentOS、Debian比較

    ■デーモン自動起動の設定 ○違いがあるもの ・自動起動の追加 /sbin/chkconfig --add (デーモン名); /sbin/chkconfig (デーモン名) on /usr/sbin/update-rc.d (デーモン名) defaults ・自動起動の解除 /sbin/chkconfig (デーモン名) off /usr/sbin/update-rc.d (デーモン名) remove ・自動起動設定の確認 /sbin/chkconfig --list Debianはない? ○共通 ・起動時に実行される デーモン名には、/etc/init.d内のシェルスクリプト名が入ります。 これは、CentOSの方が便利な気がします。 ■iptables ○ファイアウォール設定 /etc/sysconfig/iptables CentOSでは、ファイアウォール設定が上記ファイルに保存されま

    サーバの基本的な設定ファイルとCentOS、Debian比較
  • とても便利なvimのコマンド紹介

    こんにちは。小川です。 今日はvimのコマンドでも紹介しようかなと思います。 僕はテキストエディタは大体vimを使っています。 執筆をしたときもvimでやっていましたし、PHPvimで書いています。 vimって色々コマンドがあって便利ですよね。友達vimのコマンドを教えあったりして、度々「こんな便利なコマンドがあるのか!」と驚かされます。 今日はそんなvimのコマンドの中から普段使っていて便利だなーと思うものをいくつか紹介していきます。 ちなみにShiftを押しながらのコマンドは、アルファベットキーの場合は大文字で表記します。 エンターやエスケープを押下する必要がある場合はエンターやエスケープと記述します。「:」ではじまるコマンドモードはエンターを押さないと意味がないので、そこは省略します。 同時押しは+でつなげて表記し、基的には1文字ずつ順番に押下します。 ■ページ移動 「ggで」

    とても便利なvimのコマンド紹介
  • 知っておくと役立つかもしれないLinuxコマンド(サーバ確認関係)

    こんばんは、牧野です。 一時期また夜型になってしまっていたのですが、最近はまた朝型生活、というよりも早朝型生活になりました。 仕事の方はというとsymfony案件は一段落して、今はオリジナルのフレームワーク、ライブラリでプログラムを作ったり、javascriptのプログラムを1から書いたりと、マイペースでやっています。 さて、今日も軽めなネタで、知っているといざという時に役立つ、かもしれないLinuxのコマンドです。 サーバ構築や緊急対応などでサーバを触る場合は使う機会があると思います。 ■サーバのOS情報を確認

    知っておくと役立つかもしれないLinuxコマンド(サーバ確認関係)
  • シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー

    はい、おつカレー様です。 bashを使ったシェルスクリプトでパイプを使っても戻り値をちゃんと取りたいときの話です。 シェルスクリプトの戻り値 シェルスクリプトでの戻り値取るときに $? を使うことがあると思います。 $ ls / # こっちは正常 $ echo $? 0 $ ls /notfounddir # こっちはエラー $ echo $? 1コマンドのログを取りたいなと思ってteeとかつなげちゃうとteeの戻り値になっちゃって取れないですよね。 $ ls /notfounddir | tee test ls: /notfounddir: No such file or directory $ echo $? 0 # <-アレ? ${PIPESTATUS[@]} こういう場合は、${PIPESTATUS[@]}を使うことで取ることができます。 $ ls / | tee test.log

    シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー
  • Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「ほとんど忘れた、Makefile」 にて: Makefileなんてもう何年も書いたことがないぞ。ウーン、だめだ、忘れている。 「忘れている」ってよりは、僕の知識じゃ古すぎて、改めて勉強しないとダメでした*1。 なにしろ、makeだけじゃ機能が貧弱なんで、cpp(Cプリプロセッサ)やm4(マクロプロセッサ)と組み合わせて使っていた頃しか知らんからね(古すぎ!)。今じゃGNU Makeを(使おうと思えば)どこでも使えるから、GNU Makeを習えばそれでいいじゃないかな。僕は、Windows上のMSYS(MinGW - Minimal SYStem)でGNU Makeを動かしました。 というわけで、GNU Makeの手習いをしたからメモしておきます。以下、名前がMakefileじゃなくても、GNU Makeへの指示を書いたファイルは何でもMakefileと呼びます。 [追記]id:paell

    Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 本日のtip:ファイル名に日付や時刻を入れるには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ちょっとしたtipでも「ヘーッ」と思う人もいるようなので書いてみます。Unix/Linux/Cygwin/MSYSとかでの話。 ファイル名の一部に日付や時刻を入れたいときはけっこうあります。次のようにします。 $ touch `date +%Y-%m-%d`.txtこれで、2008-11-29.txt (このエントリーを書いている時点での「今日」)という名のファイルができます。 dateコマンドの+オプションで、表示する日付・時刻のフォーマットを指定できるのです。パーセントの後の1文字は次のような意味です。 文字 意味 例 Y 4桁の年 2008 y 2桁の年 08 m 2桁の月 01, 11 d 2桁の日 01, 29 H 24時制2桁の時間 01, 14 M 2桁の分 01, 59 S 2桁の秒 01, 59 A 曜日 Saturday a 曜日(省略形) Sat 曜日の表示はロケール

    本日のtip:ファイル名に日付や時刻を入れるには - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    まずは事の発端を説明します。 /etc/passwdファイルは、ユーザー情報が1行に1ユーザー分ずつ書かれたテキストファイルです。1行はコロンで区切られた7つのフィールドからなります。僕は、最初のフィールドであるユーザー名と、最後(7番目)のフィールドであるログインシェルだけを確認したかったのです。cat /etc/passwd として、直接目で見るだけ*1でもユーザー名とログインシェルを読み取れるのですが、ちょっと辛い。なるべく見やすく表示したいのです。 この課題を狂言回しにして、Linux/Unixコマンドラインでちょっとした事をやるための地味なコマンド達とシェル構文を紹介します。「スクリプト言語(例えばperl)を使えばいいじゃねえか」というご意見・ご指摘はゴモットモだと思いますが、今回は聞く耳持ちません。(スクリプト言語処理系ではない)コマンドとシェルの範囲内でのもっと良い方法は是

    Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • シェルのリダイレクトの補遺 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日書いた「シェルのリダイレクトを『こわいものなし』というくらい完全に理解しよう」に、随分とブックマークやトラックバックをいただきました。それらのフィードバックを拝見して、僕の説明にいたらない所があったと思いますので、ここで補足します。 コマンド実行単位≒simple command パイプ記号「|」や逐次実行の記号「;」を含んだ長いコマンドラインも、1つのコマンドとその引数、それとリダイレクト指定からなる“成分”に分解できます。こういった成分をなんと呼ぶか僕は知らないので、仮に「コマンド実行単位」とでも呼びましょう。 シェルの構文(grammar)的概念としてsimple commandというものがあります。ここで言ったコマンド実行単位は、ほぼsimple commandだと言っていいでしょう。「ほぼ」と付けたのは次の理由からです; 「コマンド実行単位」は、1つのプロセスを起動することを

    シェルのリダイレクトの補遺 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Java BlockingQueueで遊ぶ:パイプラインごっこ」でパイプラインの話をしたので、来の、つまりUnixのパイプやリダイレクトを少し調べてみました。 たまに話題となる some-command >file 2>&1 と some-command 2>&1 >fileの挙動の違いについて、「シェルはコマンドラインリダイレクトの指定を右から左に解釈実行する」なんて説明が見つかりました。んなバカな! パージングは左から右にするものですよ。パーズツリーを逆順にたどることはできるけど、そんなことする必然性はなんにもないよ。 次の記事を読むと、「右から左」なんて事情じゃないことが分かるでしょう。 UNIXの部屋 検索: リダイレクト シェルのリダイレクトにまつわる失敗 さてここでは、複雑なリダイレクト処理も完全に理解できる処方箋を示しましょう。例えば、次のコマンドラインが何をするか分かる

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 伽藍とバザール

    Eric S. Raymond 著 山形浩生 YAMAGATA Hiroo 訳    リンク、コピーは黙ってどうぞ。くわしくはこちらを見よ。 プロジェクト杉田玄白 正式参加作品。詳細は http://www.genpaku.org/ を参照のこと。 1999/07/30版、1999/08/16訳更新, 2000年5月2日更新 原文の最新版はhttp://www.catb.org/~esr/writings/cathedral-bazaar/にて各種フォーマットで入手可能。 翻訳の pdf 版はhttps://cruel.org/freeware/cathedral.pdfにある。 翻訳の PostScript 版 (tar+gzip圧縮)はhttps://cruel.org//freeware/cathedral.tgzにある。 第 2 部 「ノウアスフィアの開墾」 (Homesteadi