コンパイル時に、たとえば $ gcc -o prog1 prog1.c prog1.c: In function `main': prog1.c:9: error: syntax error before ';' token prog1.c:9: error: syntax error before ')' token prog1.c: At top level: prog1.c:14: error: syntax error before "return" のようにエラーがでます。 このエラーは得体の知れない英語ではなく、比較的わかりやすい、意味のある英語です。 「In function `main'」=「main()のなかのどっかで」 「9: syntax error before ';'」=「9行目の;の前に文法エラー」 などです。 間違いをつぶしていくこつは、 とりあえず、一番最初
ちょっと前から Docker を使っているので、その話。 Dockr について Docker は dotcloud がオープンソースで公開している、コンテナ技術による仮想化ソフトウェア。 以下のテクノロジーベースにしている: LXC 前にも書いた。Xen とか VirtualBOX みたいにホスト内に仮想マシンを立ち上げるんじゃなくて、ホスト内の隔離された環境で仮想マシンを動かす技術。物理マシンをシミュレーションしているんじゃないってことは、VPS とか EC2 とかの仮想マシン上でも問題なく動くし、マシンを起動するプロセスが不要となるので、一瞬で使い始められるというメリットにつながっている。 AUFS UnionFS(ディレクトリを重ね合わせることができる)の実装の一つ。元の仮想マシンイメージを書き換えないで、更新が発生した部分は別の場所に書き込んでいくようになっている。これにより、仮想
はじめに Unionファイルシステムと呼ばれる、ファイルシステムを重ねあわせて透過的に扱うための仕組みがあります。この仕組みを実現する実装は複数あり、その一つがAuFS 1 です。 AuFSはDebian標準のカーネルではデフォルトで有効になっていたのですが、最近のカーネルでは削除され 2 ました。 この記事を書いている時点では、以下の2つのlinux-imageが64bit向けに提供されており、AuFSが使えるのは、3.16.0-4のほうのみ 3 です。 linux-image 4.0.0-1 linux-image 3.16.0-4 AuFSの代替としてのOverlayFS,unionfs-fuse AuFSがDebianの提供している最新のカーネルから削除されたとはいえ、まったく使えないわけではありません。依然としてAuFS自体はカーネル 4.x向けにメンテナンスされています。しかし
LXCでAUFSを使うので、AUFSを使えるようにKernelをビルドした話。 使ったOSはCentOS 6.2(x86_64)。6.4で試せばよかった。 ソースコードを取得。 aufsのプロジェクトからgit cloneする。 aufsのプロジェクトにKernelのソースコードもある。 gitはyum install gitしておきましょう。 cd /usr/local/src yum install -y git git clone git://git.code.sf.net/p/aufs/aufs3-linux aufs-aufs3-linux cd aufs-aufs3-linux/ git checkout refs/tags/v3.13 # 必要なさそうだけど必要だった cd /usr/local/src/aufs-aufs3-linux git clone git://git
RHELのFC/iSCSIのマルチパスで使用するDevice Mapper Multipath の Device Mapper って実は結構、深い機能を提供している。 参考>> RedHat における iSCSI 設定とマルチパス 参考>> マルチパスI/Oの設定(RedHat) LinuxのLVMも、Device Mapperのラッパーとして実装されている。そんなDevice Mapperについての話。 Device Mapperってのは何をしているのかと言うと、「あるデバイス(単体でも複数でも)のブロックを、別のデバイスとして見せる」という、マッピング機能を提供している(そのまんま ディスクを例にあげると、ブロックデバイスである/dev/sda の 何ブロック目から、指定のサイズを切り出して、仮想の別ブロックデバイスとして作成することになる。 設定自体は非常にシンプルで、指定する項目は
device-mapperというのは、ブロック層の仮想化レイヤであり、ソフトウェア的な観点からいうとフレームワークである。 target_typeと呼ばれるプラグインをカーネルモジュールとして実装することで、device-mapperの上に仮想的なブロックデバイス機能を実現することが可能である。 device-mapperは、仮想的なブロックデバイスを作成し、その仮想デバイスは、受け取ったI/Oを処理する。ここで重要なのは、物理的なブロックデバイスが行うべき処理を完全にemulateすることである。仮想デバイスのクライアントは、それが仮想的であるか物理的であるかを意識することがない。またこれより、仮想デバイスは仮想デバイスの上に作成することも可能である。このような特性から、device-mapperによって作成された仮想デバイスは、“stacked device"とも呼ばれる。device
Vagrant + VirtualBox + CentOS7.0 + Docker1.5な環境で、コンテナが起動しないというエラーに遭遇しました。 コンテナの自動起動(--restart=always)を仕込んでおいて、サーバを再起動してからDockerデーモンを起動したときに、コンテナが立ち上がらない。 docker ps -aを見ると起動直後にコンテナが以上終了していることがわかります。 [vagrant@localhost ~]$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5189b16c0917 mongo:3 "/entrypoint.sh mong 35 minutes ago Exited (128) 29 minutes ago mongod [vagrant@localh
2013年から2014年頃、空前のDocker大ブーム期に書かれたブログ記事には、よく「DockerはAUFSを使って差分イメージを実現している」と書かれてあります。 しかし最近のDockerではAUFSは使われていないのでもう忘れたほうがよいでしょう。(一応選択しようと思えばできます) Docker 0.7から、ストレージ層がプラガブルになって、ストレージドライバを自由に選択できるようになりました。 最新版のDocker(v1.5)では、 下記の5つを選択できるようになっています。 aufs btrfs devicemapper overlay vfs つまりaufsは選択肢のひとつにすぎないということです。 実際にどのストレージが使われているのか? 選択可能とは言え、大半のひとはデフォルトのまま使っていると思います。 ディストリビューションごとに、デフォルトのストレージドライバを調べて
自分がプログラムを書き始めた頃、どんな環境で他のプログラマーが仕事をしているのか分からなかったのですが、昼休みのWebサーフィン中に以下の記事を見つけました。 新入学生/新社会人応援企画: 第3回 あるWebプログラマーの作業環境――豪傑の三種の神器 はてなの伊藤直也さんが新人プログラマー向けに自身の環境を紹介している内容ですごく参考になりました。 そこで紹介しているソフトウェアは次の三つでした。 Emacs Zsh Screen それぞれ使いこなすようになるには大変でしたが、馴れてからはこれらのソフトウェアにものすごく助けられています(まだ使いこなせていない機能も沢山あります)。 この記事は2007年に書かれていて今はインストール方法やパッケージ管理など少し状況が変わっているので、そのあたりをここで書いていこうかと思います(インストール方法はMac環境のみ書いています、事前にHomebr
こんにちは。エンジニアの森田です。 MFクラウド会計の開発を担当しています。 今月入社したばかりなのですが、実は入社前からDockerで開発環境を作ろうと心に決めていました。 なぜなら、下記のような問題によく悩まされていたからです。 OSやRubyのバージョンアップの度にbundle installがこける。 Windowsを使っているデザイナさん向けに動作環境を作るのが大変。 ブランチを切り替えるとDBのスキーマが違うため動かない。 ライブラリを新しいものに差し替えたら既存のアプリがおかしくなる。 そこで実際にDockerを導入してみました。 今回はDocker導入に際しての問題とその対応について紹介します。 発覚した問題と対応 コーディングの際はMac上のエディタを使いたいので、Dockerのディレクトリ共有機能を使ってコンテナとホストでプロジェクトのディレクトリを共有していたところ、
今までいまいちモチベが上がらなかったHaskellでスクリプトを書くというのが、急に現実的になってしまったので、紹介します。 Haskellでスクリプティングする上での問題点 Haskellはもともと簡単なテキスト処理を書きやすいプログラミング言語ではあるのですが、標準で提供されているライブラリはあまり多くないので、必要に応じてコミュニティーパッケージを導入しなければその力を存分に発揮することができません。 通常のパッケージなら、cabalに依存関係を書けばパッケージマネージャで自動的に(コケることもありますが、理想的には)管理できるのですが、シェルスクリプトやPerl、あるいは最近ならPythonでやるような、コードを直接インタプリタで実行するような形のコードでは、そのような依存関係を自動で解決することは難しく、その上、仮にやろうとしたところで、いつまでもその依存パッケージが新しいコンパ
概要 コードリーディングにまつわるエトセトラ。 経緯 大量のレガシーコードを読むことになりそうなので、コードリーディングの知識を整理し、 自己の理解を深めるとともに、チームメンバーとの共有をすることになりました。 下準備 事情通の把握 該当コードに詳しい人物を把握しておく。 フレームワークの設計を理解する フレームワークを利用している場合は、フレームワークの概念を理解し、 自分が担当する箇所がどのような役割をしているのか理解する。 ドキュメント ドキュメントを読む ドキュメントを読むことで、内部構造を理解する。 ただし、ドキュメントの質が低かったり、ソースコードとの同期の度合いなどによっては信頼度が下がる。 プロジェクトの事情通がいれば、ドキュメントがどの程度信頼できるか確認の上で活用度合いを決める。 高レベルの設計を把握する 信頼できるドキュメントに、システムの高レベルの設計がまとめられ
概要 メソッドについて (この書籍のベースはJavaの話) 詳細 複合メソッド 他のメソッドを呼び出すコードでメソッドを構成する。 各呼び出しは処理の粒度を揃える。 メソッド分割のオーバーヘッドは可読性に比べたら大したものではない。 意図を示す名前 利用目的に即した命名を行うこと。 処理の詳細を伝えるような命名よりも目的のみを伝える方がよい。 メソッドの可視性 Javaはpublic,パッケージ,protected,privateの可視性がある。 公開範囲が広いほど以降の変更に対する製薬が厳しくなる。 公開範囲は可能な限り狭くすることが望ましい。 メソッドオブジェクト 複雑な長い処理がある場合はその一部をオブジェクトとして独立させる。 例えば下記のような国民総生産を計算する長い処理があったとします。 void calclateGnp() { GDPの計算開始 : ※長い処理 GDPの計算終
Java EEアプリケーションにおけるデータベース操作を、よりシンプルで簡単にするためのデータ永続化機能が「JPA(Java Persistence API)」だ。同APIのキホンを、書籍「わかりやすいJava」シリーズでおなじみの川場隆氏が解説する。 Java EE 6や同7など最新のJava EEを使用したアプリケーション開発に初めて取り組む方にとって課題の1つとなるのは、Java EE特有のデータ永続化機構である「JPA(Java Persistence API)」の習得であろう。入門者向けのJava解説書として定評のある「わかりやすいJava」シリーズで知られる川場隆氏(活水女子大学 教授)の解説により、JPAの基本を学んでいただきたい。 ※本記事は、日本オラクルが2015年4月に開催した「Java Day Tokyo 2015」における川場隆氏のセッション「やさしく理解するはじめ
kamipo traditional については以下の記事が詳しい. ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々 ところでこれをJava,というかJDBCで有効にするには以下のように書いてやるとよろしい. try (final PreparedStatement preparedStatement = connection.prepareStatement( "SET SESSION sql_mode = 'TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY';")) { // This is "kamipo TRADITIONAL". More strict, healthy, nice. // https://github.com/kamipo/etcfiles/blob/
こちらのページを参考に、JavaでLinuxシステムでのCPU使用率を求める方法を調べてまとめた。 手順をまとめるとこんな感じ。 /proc/statの最初の行からユーザモードの実行時間、底優先度のユーザモード実行時間、システムモード実行時間を取得 現在時刻を取得 (現在のCPU実行時間 - 過去に測定したときのCPU実行時間) / (現在時刻 - 過去に測定したときの時刻)を計算 注意点として、/proc/stat中のCPU実行時間の単位が10msだということ(X86 Linuxの場合)。そのため、時刻の単位も10msにそろえる必要がある。 これをJavaで書くと以下のようになる。 import java.io.*; import java.text.*; public class CalcUsage { private static long old_time; private sta
はじめに Dunkheadはタイムスタンプ付きのテキストデータ(アクセスログなど)を手軽に可視化するためのソフトウェアです。Hadoop上で動作するため、データのサイズが大きい、いわゆるビッグデータの場合にも使用することができます。 今回はtopとvmstatの出力を時系列のログファイルとして扱い、Linuxシステムの負荷状況について、Dunkheadを使って可視化してみたいと思います。 プロセス毎のCPU使用率を可視化する topの標準出力をファイルに記録するために、-bオプションを使ってバッチモードで実行します。また、インターバルを5秒にするため、-dオプションに引数として5を与えます。またtopが各行末に付ける余分なスペースの削除と、タイムスタンプを付加するために、下記のようにRubyを使用します。 top -b -d 5 | ruby -ne '$line = $_.sub( /
Java8から文字列の結合方法がいくつか追加されたので、簡単にまとめました。 StringJoiner Java8から新しく追加されたクラスjava.util.StringJoiner。 区切り文字、サフィックス、プレフィックスを埋めて文字列を連結できるので 便利ライブラリGuavaのJoiner#onの代わりになる感じでしょうか。 サンプルコード public static void main(String[] args) { // 単純に文字列の結合 StringJoiner sj = new StringJoiner(""); sj.add("a"); sj.add("b"); sj.add("c"); // sj.add("a").add("b").add("c"); でもOK System.out.println(sj); //abc // 区切り文字を追加して文字列の結合 St
byte[]はこの方法ではStreamを生成できません ので、次のofでStreamを生成します 。 byte[] data = ... IntStream.range(0, data.length) .map(i -> data[i]) ... Streamのofで生成¶ Streamクラスのstaticメソッド of は、可変長引数で受けた引数のStreamを生成します。可変長引数は配列として扱われるので、ofメソッドに配列を渡すことでStreamを生成することができます。 Point[] points = ... Stream.of(points).forEach(...); また、プリミティブ型に対応するIntStream、LongStream、DoubleStreamのそれぞれのofメソッドで、プリミティブ型の配列からStreamを生成します。 整数のStream生成¶ IntS
今回から何回かに分けて java.util.stream パッケージに定義されている Collectors クラスに定義されているメソッドを見ていきます。 目次 Map 以外を返す Collector Map を返す Collector 内蔵コレクタの特性 parallel ストリーム と concurrent コレクタ 独自コレクタを作ってみよう! 独自コレクタを作る必要はない!? Collector インターフェースと Collectors クラスCollectors クラスはいわゆるユーティリティ・クラスで、インスタンス生成やクラス拡張はできず、static メソッドのみが定義されています。 これらの static メソッドはほとんどが java.util.stream.Collector オブジェクトを返すメソッドで*1、よく使うであろうコレクターが定義されてます。 Collect
Terraform + fluentd + Docker + Puree で小さく始めるモバイル行動ログ収集基盤構築 河合 航平 2015.07.07 1273 194192628259 こんにちは。 4月から新卒駆け出しインフラエンジニアとして日々奮闘しております河合です。 "モバイル行動ログ収集基盤" を "小さく" 始めたので、以下にインフラ構築からモバイルまでの設計までをまとめたいと思います。今回このログ収集基盤を作るにあたって私自身がこれまで経験したことのない技術・ツールを利用しましたので、それらの導入についてもご紹介いたします。 導入の背景 私は英単語サプリを中心にインフラを担当しています。 英単語サプリとは、聞ける・話せる・覚えてるをコンセプトとした高校受験からTOEICまで対策できる英単語学習のサービスです。 ユーザの分析によく使われるツールの1つにGoogle Analy
みなさんこんにちは。高橋征義です。 先日は「春です!新生活をはじめる人に勧めたい5冊はコレ!」というタイトルで、新人向けの書籍をいくつか紹介させていただきました。 今回からITエンジニアの方のために、最近出版されたコンピュータ書(紙書籍または電子書籍)を中心としたブックガイド的な記事を書かせていただくことになりました。どうぞよろしくお願いいたします。 奥野幹也 著『理論から学ぶデータベース実践入門』(技術評論社) さて今回最初にご紹介したいのは、奥野幹也 著『理論から学ぶデータベース実践入門』(技術評論社)です。 本書の特徴は、なんといっても「リレーショナルモデルへのこだわり」と「実践への応用」です。 現代的なRDBMSの理論的な話としてはやはりリレーショナルモデルに遡りつつ、正規化の話とトランザクションの話をしたりするのが王道なのですが、研究などへの興味ならともかく、仕事などでRDBMS
編集した人 Yusuke Kuwahara 更新日 2017年08月31日 18:53 自作料理大好き!外食大好き!Rettyで働くソフトウェアエンジニアです。金土日はもっぱら粋な居酒屋さんにお邪魔しつつ、食べたいものはオールジャンル訪問しては楽しんでおり、年間に300日以上外食し気に入ったお店はリピート&投稿し、恐らく500件より多くのお店にお邪魔しています。麻布十番、中野~荻窪などの総武線沿線に出没します。五反田、恵比寿、渋谷、三茶、新宿も投稿が多め。2017年は軽井沢グルメ、宇都宮餃子ツアー、2015年は大阪名物、熊本名物食べ尽くしツアーを実施。お邪魔したお店で気に入ったメニューは家でアレンジを試みて何度も楽しんでいます。 Yusuke Kuwahara
ヨドバシAkibaと同じ建物内(入口は別です)にあるステーキ店。 「ブラジリアン鉄板ステーキ」というコンセプトなので、ブラジル国旗の黄色と緑をあしらった看板が目印です。 そして、その看板には「満腹になれる場所」の文字も(^^;; 実は、職場からここへ向かう途中で、財布を忘れてきたことに気づきましたが、取りに戻るのも面倒で… スマホは持っていたので、PayPayとかIDが使えることを祈って、突撃。 入口には「使えますシール」が見当たりませんでしたが、聞いてみたらPayPay使えますとのこと。良かった~これで安心して食べられる(^^) カウンター席は1席ごとにアクリル板で区切られていて、安心です。一番奥の席へ。 オーダーは、平日ランチサービスセットの中から、牛ランプ&チキンガレットのセット(1200円)を。 紙エプロンを着けて待っていると、10分かからずにジュージューと音を立ててステーキが到着
「一政鮨」は、江戸慶応年間の創業で、現在は5代目。 4代目の奥様も、店を手伝われています。 昨日伺った「みますや」は、昭和20(1945)年3月10日未明の東京大空襲を焼け残りました。 一方、「一政鮨」は、店の二階に焼夷弾が落ち、全て焼けてしまって古い物は何も残っていないそうです。 「みますや」と「一政鮨」の間は230m程度です。 こちらのランチメニューは次の2つ。 「ねぎとろ山かけ丼」870円 「一政丼」1,080円 店名が付けられた「一政丼」をお願いしました。 まず最初に、小鉢と味噌汁が出てきます。 小鉢は、もやしと水菜で、「味がついているのでそのまま食べてみてください」と案内されました。 シャキッとしてなかなか美味しい。 ランチメニューにあった「一政丼」のネタは、「生くろまぐろ」「ねぎとろ」「すみいか」「かつお」「ほたて貝」「あなご」「いくら」です。 しかしながらネタは入荷状況によっ
西武新宿線ユーザーのみなさん、速報です!今回は筆者の最寄駅もある、意外とマイナーな路線・西武新宿線の沿線グルメをまとめてみました!高田馬場から武蔵関までの13の駅それぞれで大人気のお店をピックアップ。路線はマイナーでも、美味しいお店がたくさんの西武新宿線。これを機に立ち寄ってみては? 情報は記事掲載時点のものです。施設によって営業時間の変更や休業などの可能性があります。おでかけの際には公式HP等で事前にご確認ください。また、当サイトではアフィリエイトプログラムを利用しており、ご紹介するお出かけスポットや商品に、アフィリエイトリンクを設置している場合があります。RETRIPでは引き続き、行き先探しに役立つおでかけ情報を提供していきます。
PART 1.はこちら : 強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 1. ログが使われる場面について4つ説明したいと思います。まずデータベースストレージエンジンの内部です。 B-tree はアルゴリズムの授業で学びましたよね? ストレージエンジンに広く使われているデータ構造です。ほぼ全てのリレーショナルデータベースと、多くの非リレーショナルデータベースで使われています。 B-treeについて簡単に説明しましょう。B-treeは、ディスク上で固定長のブロックとなる ページ から構成されており、通常、その固定長は4KBか8KBです。ある特定のキーを探したい時は、まずtreeのルートにあるページから探索を始めます。そのページは他のページへのポインタを内包していて、各ポインタはキーのレンジ(範囲)にタグ付けられています。例えば、もしキー
この(0,eval)('this')はいったい何なのか。調べた。 調べた結果 これはindirect eval callを使用した、どのスコープでも必ずグローバルオブジェクトのthisを取得するためのテクニックであった。 ES5ではevalを直接呼び出すと、引数のコードはそのスコープで実行されるが、間接的にevalを呼び出すと、引数のコードは必ずグローバルスコープとなるそうだ。なので引数のthisは必ずグローバルオブジェクトとなる。ブラウザではwindowとなり、Nodeではglobalになるのだ。実際どうするかだが、eval関数を変数に代入し、その変数で実行すればよい。 // Nodeで実行 var obj = new (function(){ this.direct = eval('this'); var ev = eval;// 変数に代入 this.indirect = ev('t
Combining steps from official Quick Start Guide and Launching Spark on YARN we get: We’ll create a very simple Spark application, SimpleApp.java: /*** SimpleApp.java ***/ import org.apache.spark.api.java.*; import org.apache.spark.api.java.function.Function; public class SimpleApp { public static void main(String[] args) { String logFile = "$YOUR_SPARK_HOME/README.md"; // Should be some file on yo
Captcha security check sequenceiq.com is for sale Please prove you're not a robot View Price Processing
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く