タグ

Unixに関するMukeのブックマーク (17)

  • 「構え、撃て、狙え!」さっさと動くものをつくって、小さく素早く失敗するして学ぼう

    Photo credit: Dushan and Miae via Visual hunt / CC BY-SA今回は、前回紹介した『UNIXという考え方』の続きで、定理の一つのご紹介です。「初期から動くものをつくってフィードバックをもらって、軌道修正しながら、ゴール見つけて達成しましょう」は、アジャイルな開発でも指摘していますが、Unixの哲学でもその重要さが語られています。 定理3:できるだけ早く試作を作成する ソフトウェアを使って、誰向けに何の問題を解けばよいか、どう解けばよいか、予めはっきりと分かっているのであれば、わざわざトライアンドエラーで失敗しながら学ばなくても、一度立てた計画通りにものごとをすすめることができるでしょう。例えば半年間の開発の初期段階で仕様・設計を作成して固定し、実装・テストして完成させる計画を立てても実現できるはずです。 ところが、終盤に実際に動くものを見て

    「構え、撃て、狙え!」さっさと動くものをつくって、小さく素早く失敗するして学ぼう
  • Vimのdiffモード関連Tips

    B! 258 0 0 0 Vimのdiffモード機能はVimを使うべき一つの大きな理由になるくらい便利なものだと思います。 違いを見るためだけでも左右に並べて見れるので diffコマンドなんかよりもよりわかりやすく見ることが出来ます。 そのdiffモード関連のVimの機能やプラグイン等のまとめ。 vim -d vimdiff :diffsplit diffモードでの操作 diffモードの設定 :DiffOrig linediff.vim vcscommand.vim diffchar.vim vim-diff-enhanced vim -d 2つの似たようなファイルを比べたい時に $ vim -d a.txt b.txt とすると2つを比べた状態でファイルを開くことが出来ます。 3つ以上同時に比較することも可能です。 diffモードでは以下のオプションがセットされます。 diff: on,

    Vimのdiffモード関連Tips
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • 「非Railsアプリケーションのマルチデータベース対応と高速化の取り組み」が面白かった - rochefort's blog

    RubyWorld Conference 2015の動画を見ています。 18分ほどの短めのセッションでしたが、とても面白かったです。 MySQLにしか製品していなかった製品を大人の事情でPostgreSQLにも対応したというお話。 ORMとしてSequel を導入したがいろいろ問題があり、それらをいかにして乗り越えたという心温まるおエピソードでした。 A-5-1 「非Railsアプリケーションのマルチデータベース対応と高速化の取り組み」 Sequel導入 結果 遅くなった! 原因 ARパターンでDB接続時にテーブル構造を取得 Unixデーモンモデル(接続ごとに子プロセスをfork) マルチスレッド化 プロセス生成コスト減 クラスメソッド クラス変数 グローバル変数 シングルトン PID コネクションプール 結果 遅くなった!! 原因 Rubyは1プロセスが同時に1CPUしか使えない 複数ス

    「非Railsアプリケーションのマルチデータベース対応と高速化の取り組み」が面白かった - rochefort's blog
  • CPU実験で自作CPUにUNIXライクOS (xv6) を移植した話 - 豆腐の豆腐和え

    今年のCPU実験では、有志からなる我らがX班が、おそらくCPU実験史上初である自作CPUへのOS (xv6) 移植に成功しました。コア係とコンパイラ係の面々がそれぞれまとめ記事を書いていたので、OS係から見たOS移植のまとめも書こうかなと思います。こんなことしてましたってことが伝わればいいなと思います。 この記事を読む後輩やらなんやらがいたら、ぜひ僕らがやったようなことはさっさとクリアしちゃって、さらにさらに面白いことをする踏み台にしていってほしいですね。 どなたが読んでもある程度概要が伝わるよう、まずCPU実験とは何かということをさらっと書いた後、実際にxv6を移植するにあたってやったことをまとめたいと思います。 CPU実験とは CPU実験は僕の学科(理学部情報科学科)で3年冬に行われる、半年間にわたる学科名物演習です。 最初の週で4~5人程度の班に分けられた後、それぞれの班でオリジナル

    CPU実験で自作CPUにUNIXライクOS (xv6) を移植した話 - 豆腐の豆腐和え
  • 【翻訳】Web世代のデベロッパーのためのmake - MOL

    Original:Make for the Web Generation (2015-02-28)by Casper Beyer イントロ JavaScriptの普及に伴いビルドツールが盛んだ。人気なものをいくつか挙げれば、grunt、gulp、slush、broccoliやbrunchなどがあるが、結局、名前をつけただけにすぎない。 多かれ少なかれ、これらのツールはファイルコピーからzipファイル作成のようなシンプルなタスク処理でさえ、すべてプラグインに依存しているので、それらのタスクを実行するためにプラグインを必要とするだろう。 これらのツールは理想論的には大きな柔軟性をもたらすものとされているが、実際はUNIXのエコシステムをただ複製しているだけにすぎない。このために君のプロジェクトは早々に、大きな開発依存性のバンドルを持つことであろう、そして、やっているタスクは単なる普通のコピー、

    【翻訳】Web世代のデベロッパーのためのmake - MOL
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 / Jesse Storimer - スペクトラム

    #naruhounix を読んだ。 正直「プロセス?あれでしょ、なんか動くやつ。」というレベルだったので非常に勉強になった。 Rubyで書かれているのも、余計なこと(Cの文法とか例外処理とか)がついてこなくて理解しやすい。 書き方はいいからイメージが知りたいんや!というタイプの方におすすめ。 逆にRubyの余計なこと(このバージョンでは修正済みとか)がついてくるのでRubyist寄りであることはいなめない。 プロセスをforkしてもリソースは同じみたいなところはポインタ的な解釈。 あとfork後ちょっとでもメモリの内容が変わったら全コピーだと思ってたけど全然違ってオブジェクト単位?(このへんあやふや)というか当に変わった部分だけコピーされるみたいだ。 例えばRailsアプリとかは立ち上がる際に大量のフレームワークのコードとアプリケーションのコードを読み込んでいるので数秒とかかかる。 しか

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 / Jesse Storimer - スペクトラム
    Muke
    Muke 2015/04/08
  • Mac の Finder から cdto で iTerm2 を立ち上げるように設定した

    この間、Mac で使っているターミナルを標準のから、 iTerm2 に移行したので、 cdto も iTerm2 で開くようにしたい。その設定を行いました。調べた所、 cdto のアプリケーションのインストールディレクトリのうち、 /Applications/cd\ to.app/Contents/PlugIns/terminal.bundle に Mac 標準のターミナルを起動するためのプラグインが入っている。これを iTerm2 用のプラグインと入れ替えれば良いということです。 【追記 2016/07/13】 Mac El Capitan と iTerm2(バージョン3.0.0)環境での cdto インストール方法について記事を新たに書きました。このページの方法で上手くいかない場合は、ご参考お願いいたします。 cdtoでMac El CapitanのFinderからiTerm2/ターミ

    Mac の Finder から cdto で iTerm2 を立ち上げるように設定した
  • Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ

    この記事ははてなエンジニアアドベントカレンダー2014の8日目です。 今回は、Go言語でサーバ管理ツール Mackerel のコマンドラインツールmkr を作るときに調べたこと、考えたこと、やったことについて紹介します。(mkr は現時点では開発版での提供になります。) コマンドラインツールについて コマンドラインツールを作るにあたって、@deeeet さんの YAPC Asia 2014 での発表資料が非常に参考になります。 書籍 UNIXという考え方ーその思想と哲学 の内容をベースに、コマンドラインツールはどうあるべきかということが丁寧に説明されています。 上記資料から引用させていただくと、コマンドラインツールにおいて重要なポイントは以下の7つであるとされています。 1つのことに集中している 直感的に使える 他のツールと連携できる 利用を助けてくれる 適切なデフォルト値を持ち設定もでき

    Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ
  • なるほどUnixプロセス - Rubyで学ぶUnixの基礎を読んだ - razokulover publog

    先日ISUCONが行われていた。 ボクは出場してなくて、Twitterから観戦しているだけだったんだけどisuconタグを眺めていると以下のスライドが流れてきた。 今回2位だったpixivチームのkatatsuyさんがisucon前に作っていた神資料らしい。 読んでみたが、なるほど、広告サーバーの構築時の苦労や知見が素晴らしくまとまっている。 で、スライドの最後のほうにおすすめの書籍が記されててそこに『なるほどUnixプロセス - Rubyで学ぶUnixの基礎』があったので購入して読んでみた。 親プロセス、子プロセス、fork、ファイルディスクリプタ、ゾンビプロセス、デーモンプロセス、プロセスグループ、セッショングループ、シグナル、ストリーム、パイプ、IPC、ソケット、コピーオンライト これらの用語の中で説明できない言葉があるRubyエンジニアはこのを読むと良い。 どれもUnixプログラ

    なるほどUnixプロセス - Rubyで学ぶUnixの基礎を読んだ - razokulover publog
  • なるほどUnixプロセス Rubyで学ぶUnixの基礎 を読んだ - ravelll の日記

    新人エンジニアとの読書会でシグナルの話が出た時に色々知識が曖昧なことに気づいたので読んだ。(Spyglass についてはまだ触っていない) 社内の別の読書会にこれの原著を読むものがあったんだけど、 当時 Ruby や UNIX について知識がなさ過ぎたり英語読むのに少しつらみがあったり そもそも途中から参加していなかった。覚えていたのはゾンビプロセスの語感と内容が重要そうだったってことくらい。 今回は英語学習より内容の速習を求めたので、翻訳版を読むことにした。 以下は読書感想文です。 プロセス、カーネル、システムコール このはプロセスとそれを取り巻く技術についてそれぞれかなり基礎的なことから書かれており、UNIX について然程知識がなくとも問題なく理解し読み進められる。 自身ではプロセスは親子関係やPIDについて知っている程度で、5章のファイルディスクリプタや 10章の終了コード、11章

    なるほどUnixプロセス Rubyで学ぶUnixの基礎 を読んだ - ravelll の日記
  • nanapi勉強会vol2でshellについて話す会を企画した&話した&まとめた - UNIX的なアレ

    個人的なShellTipsをまとめてみた - UNIX的なアレ 以前に話題になったネタでこんなエントリーを書きましたが、どうならもっといろいろな人の話を聞いてみたいよね、というわけでid:sotarokと話しててこの勉強会をやることになりました。 もともとのコンセプトとしてはshellのウルトラなテクニックを紹介するというよりも、なんかイマイチ使いこなせてない感がある人とか、めんどくさい作業をめんどくさいと感じずにやっている人向けな内容です。 そんなわけで、私が発表した内容は以下のスライドです。 なんか途中からemacsの話してるんですけど、emacsは概念だしレイヤーが違うので特に問題はありません。なおやさんもemacsの話してたし。 その他、当日の資料が上がっていますのでまとめてみました。 当日の資料 当日の発表内容はこんな感じです。全体的にすごく興味深い話でした。まず今日からzaw使

    nanapi勉強会vol2でshellについて話す会を企画した&話した&まとめた - UNIX的なアレ
  • 高学歴はMacを好むのに低学歴はどうしてWindowsを好むの? : IT速報

    1: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 17:33:30 ID:7iAHXCln0 不思議でたまりません 3: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 17:34:19 ID:ioDkMzvu0 スタバのドヤ顔どもは高学歴だったのか 4: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 17:34:45 ID:D9YYmaqk0 デスクwin & Macbook 5: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 17:34:49 ID:jzmfdbgN0 >>1 高学歴だけどwindowsだよ 6: 以下、名無しにかわりましてVIPがお送りします 2014/01/04 17:34:54 ID:I6SzsWjv0 研究者や開発者がMac使い始めたのを 真似てるだけだろ 44:

    高学歴はMacを好むのに低学歴はどうしてWindowsを好むの? : IT速報
    Muke
    Muke 2014/01/08
    あいたたたwwww
  • Pythonで学ぶ「詳解 UNIXプログラミング」(その17) おしまい - atsuoishimoto's diary

    以上でPythonで学ぶ「詳解 UNIXプログラミング」シリーズを終える。軽いネタのつもりで書き始めたが、サンプル一つ一つにきちんと目を通すのはなかなか楽しく、思ったよりも時間がかかってしまった。短期間にこんなにたくさんのos.fork()を書いたのは初めてだ。 このシリーズを通じて、Pythonのシステム管理ツールとしての優秀さを再確認することができた。ほとんどのサンプルはPythonの標準モジュールだけで実装することができたし、C言語版に比べて非常にシンプルになった。また、対話環境で手軽に実行し、その場で結果を確認できるので、より幅広い実験を行うことができる。Pythonだけでなく、他のスクリプト言語でも同様だろう。id:syohex さんが Perlで学ぶ「詳解 UNIXプログラミング」(その0) - syohex’s diary を書かれているので、Perlプログラマは参照されたい

    Pythonで学ぶ「詳解 UNIXプログラミング」(その17) おしまい - atsuoishimoto's diary
  • diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp

    UNIXの基的なコマンドの1つであるdiff。 これに実装されているアルゴリズムは実に興味深い世界が広がっています。 稿では、筆者が開発した独自ライブラリ「dtl」をもとに「diffのしくみ」を解説します。 はじめに diffは2つのファイルやディレクトリの差分を取るのに使用するプログラムです。 ソフトウェア開発を行っている方であれば、SubversionやGitなどのバージョン管理システムを通して利用していることが多いかと思います。稿ではそのdiffの動作原理について解説します。 差分の計算の際に重要な3つの要素 差分を計算するというのは次の3つを計算することに帰結します。 編集距離 2つの要素列の違いを数値化したもの LCS(Longest Common Subsequence) 2つの要素列の最長共通部分列 SES(Shortest Edit Script) ある要素列を別の要

    diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp
  • (新人向け) Unixオペレーションの注意点 - Magical Diary

    主に新人向けとして、Unixサーバで作業をする際の注意点を書いておく。 ここに書いてある内容は絶対的なものではないし、会社や現場ごとにルールがあるので、適宜ルールに合わせて実践すれば良い。 ログを取れ 何をやったか、何をやらなかったか、というエビデンスのためにログは必ず残しておく。SSHクライアントによっては毎回自動的にログ取得する設定が可能なので、設定しておくと良いだろう。 作業後に問題が発生した場合に作業内容を確認するためにも使うため、必ずログは取得しておくこと。 (追記) 当たり前だが、コマンドとその出力をペアで取ることに意味がある。 set -x (set verbose) しろ ログを取得しても、コマンドラインを編集した際には以下のように非常に見づらいものとなってしまう。(がんばれば解析することは出来るが…) ESC[0mESC[27mESC[24mESC[JESC[1myasu

    (新人向け) Unixオペレーションの注意点 - Magical Diary
  • 最近知った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
  • 1