読者です 読者をやめる 読者になる 読者になる

Segmentation Fault

コアダンプの数だけ強くなれるよ、デスマと戦うエンジニアのように。

プロキシの設定(yum,wget,curl,git)

プロキシ環境下にあるLinuxでyum, wget, curl, gitコマンドを使うときの設定。 yum $ sudo vi /etc/yum.conf proxy=http://<server>:8080 proxy_username=<user> proxy_password=<pass> wget $ vi ~/.wgetrc http_proxy=http://<server>:8080 https_proxy=http://<server>:8080 ftp_proxy="ftp://<server></server></server></server></pass></user></server>…

gdbで絶対秒を日付で表示する

gdbでデバッグ時に、対象のプログラムが内部で持っている絶対秒(Unix時間)を 日付に変換して表示する方法。バグ等でcoreファイルから原因を調査する際に欲しくなったので作ってみた。 具体的には~/.gdbinitにユーザ定義のコマンドを作って実現する。#普通にg…

Javascriptでオセロ(その2)

前回に引き続き、不足していた機能を追加してみた。 " id="Computer" value="1" autocomplete="off"/> Computer " id="First" value="2" autocomplete="off" checked="checked"/> Bat First ---------------------------------- こんな感じのオセロが完成。…

Javascriptでオセロ(その1)

HTML+JavaScriptでブラウザで動くオセロを実装してみる。 制限付き(*1)で動いたところまで。ソースコードはほとんど参考(*2)のまま。 (*1) 機能制限 AIなし(人間vs人間だけ) 黒が先行 パス不可 勝利判定なし ソースコード html othello.html <html> <head> <title>Othello</title> <link rel="stylesheet" type="text/css" href="css/board.css"> </head> <body> </body></html>

ソースコードでよく使う英単語

ソースコード書くときによく使う英単語(と対義語)。動詞系 add/del create/destory start/stop allow/deny enqueue/dequeue get/put push/pop write/read send[snd]/recv[rcv] lock/unlock import/export その他 head/tail prev/next old/new deleteなのかer…

kivyで始めるGUIプログラミング

kivyを使ってpythonでサクッと簡単(*1)にGUIプログラミングを試してみる。 (*1)環境構築はあまりサクッとは行かない模様 [実行環境] CentOS6 X86-64(64bit) Windows7(Xmingで表示) いつものLinux側でプログラムを実行してWindows側で表示するスタイル。 事前…

XORで暗号化&複合化

最も簡単な暗号化/複合化を試してみる。 任意のデータとある定数値の排他的論理和(XOR)を2回とると元のデータに戻る性質を利用する。例) 任意のデータ : 10101010 XORをとる定数: 11110000 1回目 10101010 XOR 11110000 ------------- 01011010 2回目 010110…

エクセルでプログレスバーを表示する

vba

エクセルのマクロ(VBA)で処理の進捗状況を表示する。 プログレスバーのフォーム作成 フォームの追加 コントロールボックスにプログレスバーを追加 ラベル、ボタン、バーを追加してそれっぽく作成 ソースコード作成 UserFormに中断ボタン実行を判定するフラグ…

socatで装置内通信のデータをのぞき見る

socatを使ってUNIXドメイン通信を中継し通信内容をのぞいてみる。 構成のイメージは下記。 -------------------------------------------------- ________ ________ ________ | | | | | | | Client |--->| socat |--->| Sever | |________| |________| |____…

Ncursesでスクリーン制御

Ncurses(*1)を使ってスクリーン制御してみる。(*1) CUIでスクリーン、キー入力、カーソルなどの制御機能を提供するライブラリのこと。 make menuconfig とか実行すると出てくるアレを実現できる。 ソースコード sample.c #include <curses.h> #include <stdlib.h> #define ESCAPE</stdlib.h></curses.h>…

マウスの座標を表示する

Javascriptでマウスの座標(左上端からのX,Y距離)を表示する。 ソースコード mouse.html <HTML> <HEAD> <TITLE> マウス座標 </TITLE> </HEAD> <BODY> マウス座標 <br> (X,Y) = <input type="text" style="width:50;" id="global_x">, <input type="text" style="width:50;" id="global_y"> <br> <SCRIPT type="text/javaSCRIPT"> (function (){ // スクロール位置取得 funct…</body></html>

Window-Linux間通信

TCPを使ってWindowsとLinux間で通信してみる。 具体的にはWindows上にVirtualboxで仮想マシンを作成しHost-Only-Adapter経由で通信する。 構成 サーバ : Linux CentOS 6, X86_64(64bit) on Virtualbox クライアント : Windows7 (32bit) プログラム作成 クラ…

Qt5で始めるGUIプログラミング

Qt5を使ってGUIプログラミングに挑戦してみる。 まずはウィンドウを出すだけ。Linuxサーバでアプリケーションを作成&実行し、表示はWindowsで行うスタイル。 実行環境 ホスト側 Windows7 32bit Xming 6.9.0.31 Teraterm 4.9.2 サーバ側(実行側) CentOS 6, x…

シグナル受信をepollで監視

Linuxのsignalfdを使ってシグナルをepollで監視する。 signalfd.c #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/epoll.h> #include <sys/signalfd.h> #include <errno.h> #define MAX_EVENTS 10 #define RET_OK (0) #define RET_NG (-1) #d…</errno.h></sys/signalfd.h></sys/epoll.h></sys/socket.h></unistd.h></string.h></signal.h></stdlib.h></stdio.h>

TAILQでリスト管理

TAILQを使ってリストを実現する。 詳細はMan page of QUEUE参照。 tail.c #include <stdio.h> #include <stdlib.h> #include <sys/queue.h> typedef struct memEntry { TAILQ_ENTRY(memEntry) entry; int32_t size; void* ptr; } memEntry_t; typedef struct { TAILQ_HEAD(tq_head, memEntry)</sys/queue.h></stdlib.h></stdio.h>…

ソケットプログラミング(UDP)

LinuxでUDPによる通信を行うサンプルプログラム。この手の例はGoogle先生で検索すれば沢山でてくるけど、システムコールのリターン値を見てなかったり、openに対応するcloseをしていない例が多いことに気付くと思う。もちろん動かすことだけ考えたら気にする…

Linuxでシグナル捕捉

使い方をすぐに忘れるsigactionでシグナルを捕捉する方法。 #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <signal.h> #include <errno.h> #include <string.h> #include <unistd.h> static volatile sig_atomic_t RecvSigno = 0; void signal_handler(int signo) { RecvSigno = signo; } int main(void) </unistd.h></string.h></errno.h></signal.h></stdint.h></stdlib.h></stdio.h>…

Teratermマクロでカウンタ表示

Teratermマクロで実行回数を表示する。 カウンタ表示マクロ(counter.ttl) ; グローバル変数 Count = 0 true = 1 false = 0 ; 以下、dateコマンドを無限に繰り返す while true call show_counter sendln "date" wait ']$' pause 1 endwhile ; カウンタの表示 …

PowerShellで某コンビニの入店音ぽい音

WindowsのPowerShellでbeep音を出す。 折角なのであのメロディーの再現にトライしてみた。 実行に必要な準備 PowerShellのインストール Windowsメニュー → アクセサリ → PowerShellを右クリック → 管理として起動 PowerShellスクリプトの実行セキュリティポ…

Tone.jsで音を鳴らしてみる

Tone.jsを使って簡単な演奏をしてみた。 今回は4分音符で単調なメロディーを繰り返すだけ。doremi.html <html> <head> <meta charset="UTF-8"> <title>サウンド</title> </head> <body> <button id="play">PLAY</button> <button id="stop">STOP</button> <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <…</body></html>

X11で始めるGUIプログラミング

いまどきX11でプログラム書くことがあるかは知らないけど、 凄い昔にLinuxでGUIのプログラミングにトライしたときのサンプルコードを見つけたので掲載。 現代はQtとか使うのかな。事前準備 $ sudo yum -y install libX11* x11.c #include <X11/Xlib.h> #include <X11/Xutil.h> #includ</x11/xutil.h></x11/xlib.h>…

URLを指定して開いたページをPDFで保存する

IEで特定のページを開く→ 仮想プリンタでPDF印刷という作業を繰り返したい人向け。[作業の流れ] 仮想プリンタ(BullzipやPDF reDirect等)をインストールして通常使うプリンタに設定する。 ExcelでURLのリストを作り、マクロにPDF化するプログラムを記載して実…

最低限あると嬉しいvimrc

大抵もっとごちゃごちゃ書いてあるけど、個人的に最低限あると嬉しいvimrcの設定だけをピックアップ。 $cat ~/.vimrc syntax on "色設定 colorscheme desert "前回編集終了位置からの再開 augroup vimrcExtend au BufReadPost * if line("'\"") > 1 && line(…

ソースコードと完全に同じ文字列を出力する

実用性はゼロですが、お遊び感覚でCとperlでやってみた。Perlの場合quine.pl $_=q{ q[ * * * * * * * * * * * * * * Hello Quine * * * * * * * * * * ]; print"\$_=q{$_};eval\n"};eval 実行結果 $ perl quine.pl $_=q{ q[ * * * * * * * * * * * * * * Hel…

C言語で簡易関数トレース

シンプルなprintf()デバッグをコンパイルスイッチでON/OFFできるように実装する。trace.c #include <stdio.h> #ifdef DEBUG_ENABLE #define ENTRANCE(fmt, ...) \ printf("%s:%u:===> IN %s(" fmt ")\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__); #else #defin</stdio.h>…

コードの処理速度計測にgprofを試してみた

GNUのプロファイラ gprofでコードの処理速度計測を試してみた。 関数単位、LINE(行)単位での実行速度の計測ができる模様。今回は関数単位でお試し。使い方は"-pg"のオプションを付与してコンパイルしたバイナリを実行後にgprofコマンドをかませばOK。gprofte…

linuxでkbhit()

LinuxでWindowsのkbhit()相当を実装する。kbhit.h #ifndef _KBHIT_H_ #define _KBHIT_H_ #include <stdbool.h> #include <termios.h> #include <unistd.h> extern void KB_open(void); extern void KB_close(void); extern bool kbhit(void); extern char linux_getch(void); #endif /* _KBHI</unistd.h></termios.h></stdbool.h>…

HTML,JavaScriptで格子を描画

HTML5のCanvas機能でオセロの盤面ぽい格子を描く。canvas.html <html> <head> <meta charset="UTF-8"> </head> <body> <canvas id="canv" width="500" height="500"></canvas> <script> var ctx = document.getElementById("canv").getContext('2d'); // 描画内容を指定する // 背景を500×500の緑で描画 ctx.fillStyle = "rg…</body></html>

C言語でbuffer overrun

お呼びでない関数を実行する。overrun.c #include <stdio.h> #include <stdlib.h> void goast(void) { printf("Boo!\n"); } void dummy(void) { char a[1] = {0}; a[9] = &goast; } int main(void) { dummy(); return 0; } 実行例 $ gcc overrun.c overrun.c: In function 'dumm</stdlib.h></stdio.h>…

HTML,JavaScriptでブラウザに時刻表示

HTML, JavaScriptの最初の一歩と言えばコレ。[仕様] 左上に現在時刻を"HH:MM:SS"形式で表示。'ex) 19:02:34' index.html <html> <head> <meta charset="utf-8" /> </head> <body> <div id="disp" style="font-size:48px;text-align:left;"></div> <script> setInterval(showTime, 500); function showTime() { var tv = new Date(); $("d…</body></html>

gnuplotで正規分布を表示

gnuplotで正規分布のグラフをterminal上に表示する。環境はLinux(CentOS 6)[手順] perlで正規分布に従う乱数のリストをファイルに出力 gnuplotでterminalにグラフ出力 事前準備(perl, gnulpotのinstall) $ sudo yum -y install gnuplot $ sudo yum -y instal…

find, sedで一括置換

カレントディレクトリ配下で検索したファイルについて内容を指定条件に従い置換する。実行例 $ find . -name "<search conditions>"|xargs sed -e s/'<before>'/'<after>'/g -i</after></before></search>

errno一覧

Linuxでerrno一覧 #include <stdio.h> #include <string.h> #include <errno.h> int main(void) { for(int i = 0; i <= EHWPOISON; i++) { char str[64] = {0}; strerror_r(i, str, sizeof(str)); printf("%d:%s\n", i, str); } return 0; } 実行結果 0:Success 1:Operation not permitte</errno.h></string.h></stdio.h>…

perlで正規分布

乱数の出力はボックスミューラー法。 #!/usr/bin/perl $Pi = 3.14159265359; sub RandBoxMuller { my ($u, $sigma) = @_; my ($r1, $r2) = (rand(), rand()); while ($r1 == 0) { $r1 = rand(); } return ($sigma * sqrt(-2 * log($r1)) * sin(2 * $Pi * $r2…

C言語で簡易メモリ管理

Linux Kernelのリスト構造を参考に作成。環境:CentOS 6, gcc version 4.4.7mempool.h #ifndef _MEMPOOL_H_ #define _MEMPOOL_H_ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <stdint.h> #include <stddef.h> #define EASY_ELECTORIC_FENCE (0x123456789) #define list_for</stddef.h></stdint.h></unistd.h></string.h></stdlib.h></stdio.h>…

Gmailで不要なメールを定期的に削除する

Gmailで不要なメールを定期的に削除するスクリプトを書いてみた。[仕様] 指定ラベルのメールのうち30日経過したものを削除 毎晩0時に実行(トリガーを時間主導に設定) [手順] ドライブ-->Googleスプレッドシート新規作成し開く-->ツール-->スクリプトエディタ…

Googleフォーム受信内容をメールで通知する

何かとお世話になってるGoogleフォーム。問い合わせや回答が来てないかイチイチ確認しなくてはならないかと思いきや、簡単なスクリプトを書いてあげれば投稿時に内容をメールで通知できるようなので試してみた。[手順] フォーム作成画面 → その他 → スクリプ…