コアダンプの数だけ強くなれるよ

見習いエンジニアの備忘log

2017-01-01から1年間の記事一覧

位相反転でボーカルを消す(WAVEファイル)

WAVEファイルのいじり方が段々分かってきたので今回は歌入り楽曲データのボーカルを抜くプログラムを作成してみる。環境はLinux(CentOS7)、言語はC言語。 はじめに 対象の楽曲 ソースコード 実行結果 はじめに 音楽プレーヤー等にイヤホンを半挿しにするとボ…

WAVEファイルのノコギリ波を作って再生してみる

前回はWAVEファイルからデータを抽出し波形をプロットしてグラフ化した。www.segmentation-fault.xyz 今回は逆にWAVEファイルを作成してちゃんと再生できるか試してみる。 ノコギリ波の作成 ノコギリ波生成プログラム 波形表示と再生 ノコギリ波の作成 下記…

WAVEファイルの波形をgnuplotで表示してみる

サウンドエフェクト、信号処理に興味があるが前提知識が全く無い状態。とっかかりとして、まずはWAVEファイルを理解することから初めてみることにした。今回はかじり得た知識を使ってWAVEファイルから音データを抜き出して波形を表示してみた。実行環境はLin…

netstat -s コマンドっぽい表示をシェルで実現する

最近のLinuxはデフォルトではnet-toolsのコマンド(ifconfig、netstat等)はインストールされておらず、代わりにiproute2(ip、ss等)の使用を推奨していたりする。多くの先人の方がnet-toolsからiproute2へ移行する人向けにコマンド対応の一覧まとめて展開して…

Linuxのbcコマンドで高校数学

bcは四則演算や三角関数を使った計算をすることができるコマンド。対話モードで電卓のように使用したり、数式を記載したファイルを食わせて計算したりできる。使いどころが難しいけど覚えると何かと楽しいので軽くおさらいしてみた。 使い方 使用頻度が高い…

GoogleのTCP BBRでLinuxサーバーの高速化を試す

GoogleさんがLinuxに実装したTCPの輻輳制御モジュールでTCP通信がどのくらい高速化されるのか試してみる。環境はVirtualBox上にインストールしたCentOS7(64bit)。具体的にはVMを2つ作成しiperfを使ってVM間のTCP通信性能がどのくらい変わるのか見てみる。 BB…

Net-SNMPのサブエージェントを作ってみる

プライベートMIBで監視するためのサブエージェントをNet-SNMPをベースに作成してみた。 作成&実行環境はLinux-CentOS7(64bit)、言語はC。 はじめに Net-SNMPのインストール ソースコードのダウンロード configure / make / make install コンフィグ(snmpd.c…

コマンドプロンプトの画面ログを取る

仕事でWindowsのコマンドプロンプトを使うときに画面ログを取りたいときがある。 (いままでその都度で表示内容をコピペしたり、PrintScreenを取ったりしており効率が悪かった)PowerShellを使えばログを取る方法があるっぽいが何かと面倒臭そう… PsExecを使っ…

WordpressをNginx + redisキャッシュで高速化する

Wordpressは今までApache + mysql + phpの構成で構築してたけど、NginxとRedisを使ってみたかったで試してみた。下記を参考にさせていただいた。qiita.comwww.jeedo.net 構築環境は下記(さくらVPSの1Gプラン) ・CentOS7 (64bit) ・RAM 1G ・仮想コア 2コア (…

CentOS7(VPS)にminergate-cliをインストールしてアイドルタイムで仮想通貨を掘る

お勉強用にさくらVPSを利用しているが、平日の日中と夜間はリソースの使用率が低く余っており、このアイドルタイムで何か出来ないと探っていたところMinerGateのマイニングソフトで仮想通貨の採掘が可能そうなので試してみた。実行環境はCentOS 7, 仮想2コア…

Androidスマホ(Nexus5X)からapkファイルを取り出す

Androidスマホ(Nexus5X)からインストール済みのアプリのapkファイルを取り出してみた。大した内容は書いてませんがお約束として下記。[前置き] 法律で保護されたプログラムに対してリバースエンジニアリング等を行うことは法律に違反する可能性があります。 …

NETLINKでネットワークインタフェースの状態変化を検知する

LinuxでNETLINKを使ったネットワークインタフェースの状態変化(up/down, IPアドレスの追加/削除)を検知してみる。NETLINKはネットワークインタフェースの状態変化をカーネルからユーザランドのアプリケーションに対してソケットインタフェース経由で通知して…

Raspberry Pi で Hello World

前回に引き続きラズパイ用の開発環境を構築し実機でHello Worldを表示(シリアル経由)するまでをやってみる。 実機は初期モデルからメモリが2倍の512MBになったVer。 最近のラズパイに比べたら装備も性能も劣るけれど個人的にはこっちのシンプルな方が好き。 …

Virtualbox上にLinux Mintをインストール

Windows7でVirtualBox上にLinux Mintの環境(sshでログインできるまで)を構築する。 用途はRaspberry-pi用のソフトウェア開発環境。[材料] ・Windows7-32bit ・Linux Mint 18.1(Mate 32bit) ・VirtualBox ・Teraterm (ssh接続用) 事前準備 イメージァイル(iso…

32bit-UEFI環境でLinux-MintをUSB-bootする

手持ちのノートPCであるASUS x205TAでLinux-Mint(インストール用のライブ版)をUSB-Bootしてみる。[材料] ・ASUS x205TA ・USBメモリ(BUFFALO 16GB) ・Linux-Mint(18.1-mate-32bit)[注意点] ・従来BIOSではなくUEFI(詳しくは勉強中)環境 ・CPUが32bitであるこ…

プロキシの設定(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"/> コンピュータ " id="First" value="2" autocomplete="off" checked="checked"/> 先攻 ---------------------------------- こんな感じのオセロが完成。申…

Javascriptでオセロ(その1)

HTML+JavaScriptでブラウザで動くオセロを実装してみる。 制限付き(*1)で動いたところまで。ソースコードはほとんど参考(*2)のまま。 (*1) 機能制限 ・AIなし(人間vs人間だけ) ・黒が先行 ・パス不可 ・勝利判定なし ソースコード html javascript css その…

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

ソースコード書くときによく使う英単語(と対義語)。動詞系 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>

Windows-Linux間をTCPで通信する

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>…