ThinkPad X250 をポチった

こんにちは、Sayahamittです。

 

この前まで9月だったのにもう11月ですか、大学も3回生となり、研究室に配属されてから半年経ったというのに、まだ何も分からないズブの素人同然で、ただ焦りが募るばかりの日々です。

 

さて、私はモバイルノートパソコンとしてMacBookPro Retina 13inch の2012年後期モデルを愛用しているのですが、MBPを使用している上で発生してきた種々の事情からもう一台ノートパソコンを購入することとしました。

種々の事情とは…

続きを読む

【Samba】共有フォルダの中に特定のアカウントのみ変更可能なフォルダを作る

こんにちは、Sayahamittです。

CentOS7 と Samba4 を利用して研究室用のファイルサーバーを作ったのですが、ちょっと変なアクセス制御をやったのでメモメモφ(..)

やりたかったこと

研究室のファイルサーバーに、メンバー各々の個別フォルダが欲しい

そのフォルダの内容は所有者のみが変更でき、かつ、全員がすべてのフォルダの中身を閲覧出来るようにしたい。

さらには、個々人のフォルダは各ユーザー自身や、他のユーザーによって消去されないようにしたいわけです。

 

研究室で共有するファイルサーバーに個々人のプライバシーが高いレベルで確保される領域を作りたくなかったので、このような構成を試そうと考えました。

 

フォルダ構成
Personal	
  +--Bob
  |    +--fileA
  |
  +--Alice
       +--fileB

具体的には、上の囲みの中に示したような共有フォルダが有ったときに、

BobはfileAを削除できますが、fileBや、フォルダAlice、フォルダBobを削除できない。

AliceはfileBを削除できますが、fileAや、フォルダBob、フォルダAliceを削除できない。

という状態にしたいのです。

続きを読む

C++で拡張ユークリッド互除法

こんにちは、Sayahamittです。

 

だいぶご無沙汰してしまいましたが久々のブログ更新です。

 

2つの整数の最大公約数を高速に求められるユークリッド互除法をなんとなく実装してみました。

意味は…ないです…w

もしかしたらそのうち簡単なRSA暗号とかもやってみるかも。

 

テクニカルなコーディングはできないので、教科書に書いてあったアルゴリズムをそのままクラスとして実装しました。

続きを読む

Java 標準入力待ちでスレッドをブロックさせない方法

こんにちはSayahamittです。

 

Javaでマルチスレッドなコードを書いている時に、あるスレッドでユーザーから標準入力待ちをする必要がありました。さらに、そのスレッドは他のスレッドと連動していて、他方のスレッドが終了したらそのスレッドも即座にかつ自動的に終了しなければなりません。

 

ご多分に漏れず僕はソッコーで躓きました。二日間も。

 

問題になったのはSystem.inを読むBufferdReaderでreadline()を行うと標準入力待ちになり、ユーザーがEnterキーを押してくれるまでそのスレッドの終了はおろか、interrupt()も出来ないことです。

しかし、僕が想像もしなかったスマートな解決策がありました。

続きを読む

UTF8なstring入れたらShiftJISなstring出てくる関数作った

こんにちは、Sayahamittです。

 

Macで書いていたC++コードをWindows VC++に持ってきたら文字コードでハマったのでメモしておきます。

 

今回は引数にUTF8エンコードのstd::string型文字列を取り、ShiftJISエンコードのstd::string文字列を返す関数と、その逆をやる関数を作りました。

バリバリのWindows API依存コードです。ごめんなさいm(__)m

 

Windowsでは内部的な処理にはUnicodeが使われているにも関わらず、コンソールにおける入出力を始めAPIなど、ユーザーとのインターフェースには未だにShift-JISが使われているようで、UTF8など多バイト文字を直接利用出来ません。

WindowsAPIなんて殆ど触ったことがない自分も、もれなくこの問題に引っかかりました。

Win API を利用する場合にはMultiByteToWideCharメソッドとWideCharToMultiByteメソッドを用いてUTF8とShiftJISの相互変換が実現できるようです。

続きを読む

C言語で逆ポーランド記法電卓を作った

こんにちはSayahamittです。

さて今回はC言語で逆ポーランド記法(スペース区切り)電卓を作ってみました。

文字列の動的確保とか、リストでスタックを実装したりとかしたので備忘録として残しておこうと思います。

(…Twitterクライアント?…(やってますよ…OOPとC++難しい…))

 

仕様っぽいもの

今回作った電卓では、四則演算が逆ポーランド記法(スペース区切り)によって書かれた数式を文字列入力として受け取り、スタックを利用して計算することにしました。和差積商以外の演算や関数はエラーを返すこととします。

また、入力桁数に制限があるとつまらないので、mallocを使って文字配列を動的確保し、

それに伴いスタックも双方向リストを用いて動的に伸縮できるように実装することとしました。

動的確保のアルゴリズムは、文字列を伸ばす場合には容量が増えた後の全体を格納するのに必要なメモリを丸々全部確保し直すものとしました。

続きを読む

Xcodeで黒背景を使う場合にカーソルを目立たせる方法

こんにちはSayahamittです。

今回もつまらない備忘録…

 

私はXcodeのエディタを黒背景にするため”midnight”テーマを使っているのですが、これだとマウスカーソルが極端に見えづらくなっていまいます。

しかし、ググったら、それを一発で解決する方法を知ることが出来ました。

私が行き着いたのはこのページ Better Xcode ibeam cursor

名前そのまんまですねw

続きを読む

WiresharkのInterface ListにNICが表示されない場合

UbuntuにWiresharkをインストールしたはいいものの、root以外ではネットワークインターフェイスを参照してくれませんでした。これはLinuxのパーミッションの挙動として正常であるようですが、Wiresharkを起動するのにわざわざ端末からsudoするのはメンドクサイ…(´・ω・`)

 

調べてみると、パケットキャプチャの為にネットワークインターフェイスを利用するプログラムの本体は/usr/bin/dumpcapで、こいつにネットワーク系のケーパビリティを与えれば上手く行くそうです。

 

忘れそうなのでメモメモ…φ(..)

続きを読む

C/C++でツイッタークライアントを作るのに必要なもの

C++でわざわざツイッタークライアントなんぞ作ろうとしている僕ですが、段々と部品単位では動くようになってきたので、自分用のまとめも兼ねて、ツイッタークライアントをフル(?)スクラッチするときに作るべき物たちを書いて置こうかとおもいます。

 

実際にはBASE64エンコード/デコードやSSL通信関係の部分は先人の方々のコードを使わせて頂いているので”フル”スクラッチとは言えないのですけれど、C++標準ライブラリとOpenSSLだけを使ってツイッタークライアントを作るとしたら何が必要なのか、というお話です。

続きを読む

UbuntuのUnity-Launcherのショートカットから任意のコマンドを実行

最近はちまちまとコードを書くことが多いので、基本的にUbuntu環境を使っているのですが、時としてWindowsのようにデスクトップに置いたショートカットから引数を与えてプログラムを起動したくなることもあります。

 

「コマンドに引数を入力するのが面倒ならエイリアスを定義すればいいじゃない」という指摘は御もっともなのですが、端末エミュレータを引数付きで起動したいときはそれでは困るというわけで…

僕は端末エミュレータとしてTerminatorを好んで使っているのですが、こいつ、画面を水平、垂直に区切って、レイアウトを作ることができて、そのレイアウトを保存し、更に起動コマンドに保存したレイアウトの名前を引数として与えると最初からそのレイアウトのまま起動してくれるという便利な奴なんです。

 

でも…「コマンドに引数を与えるって事は、一度は別の端末を立ち上げないといけないよね…?」

続きを読む