2017年09月02日

golangとjavascriptでmsgpack over websocketを試す

試してみました。

続きを読む
posted by zengaichi at 15:55| Comment(0) | Unix-Tools | 更新情報をチェックする

2017年07月13日

pip3.6 for python 3.6 on freebsd

python3で動かなくなった、正確にはpython3.5
python3.6に自動アップデートしたので

そのため、モジュールが読み込めなくなり
pip3.5をpip3.6にアップグレード


python3.6 -m ensurepip


モジュールのインストールで対応
posted by zengaichi at 13:23| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2017年05月09日

BeautifulSoupとrequestsで遊んでみた


便利いいね!


from bs4 import BeautifulSoup
import requests

URL = 'https://host'

r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html.parser')

for form_tag in soup.findAll("form"):
print(form_tag.attrs.get("action"))
for input_tag in form_tag.findAll("input"):
print(input_tag.attrs.get("name"), input_tag.attrs.get("value"), input_tag.attrs.get("type"))
print('---')

for a_tag in soup.findAll("a"):
print(a_tag.get_text())
print(a_tag.attrs.get("href"))
print('---')

posted by zengaichi at 21:43| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2016年11月27日

WPScanをWindowsにインストールしてみた

WPSCANはWindowsをサポートしてないので動作保証するものではなく次のサイトを参考にWindows7(32bit)にインストールしてみた。

How to run WPScan on Windows
https://e3fi389.wordpress.com/2016/04/25/how-to-run-wpscan-on-windows/
続きを読む
posted by zengaichi at 15:57| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2016年01月03日

レガシーな周辺機器の対応

レガシーなUSB周辺機器のドライバーが32ビット対応のみなので
Ubuntu上のVirtualBoxに32ビット版Windows 10を立ち上げてUSB接続

2つのおまじないが必要。
・VirtualBox Extensionのインストール(バージョンに合わせて)
・VirtualBoxを立ち上げるアカウントをVirtualBoxのグループに追加
posted by zengaichi at 09:34| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2015年09月26日

c++14で試してみた(・_・)ヾ

挿入が速いんだそうだ!条件付で...

code:

#include <iostream>
#include <vector>
#include <string>
#include <chrono>

const int MAX_CNT = 1000*1000;

void add_push_back(void)
{
std::vector<std::string> vs;

auto start = std::chrono::system_clock::now();
for (int cnt = 0; cnt < MAX_CNT; cnt++) {
vs.push_back("abcdefghijklmnopqrstuvwxyz");
}
auto end = std::chrono::system_clock::now();
auto dur = end - start;
auto msec = std::chrono::duration_cast(dur).count();
std::cout << msec << " msec" << std::endl;
std::cout << vs.size() << " times" << std::endl;
}

void add_emplace_back(void)
{
std::vector<std::string> vs;

auto start = std::chrono::system_clock::now();
for (int cnt = 0; cnt < MAX_CNT; cnt++) {
vs.emplace_back("abcdefghijklmnopqrstuvwxyz");
}
auto end = std::chrono::system_clock::now();
auto dur = end - start;
auto msec = std::chrono::duration_cast(dur).count();
std::cout << msec << " msec" << std::endl;
std::cout << vs.size() << " times" << std::endl;
}

int main(int argc, char * argv[])
{
add_push_back();
add_emplace_back();
return 0;
}

実行結果

554 msec
1000000 times
512 msec
1000000 times
posted by zengaichi at 20:25| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2015年05月04日

そんな省略ができるのねと試してみた(C言語)

あるCのソースコードを読んでいて、そんな省略ができるのねと試してみた。


#include <stdio.h>
int main(int argc, char * argv[])
{
char * sample = "sample";

printf("%s\n", sample ? sample : "it is null!");
printf("%s\n", sample ? : "it is null!");
return 0;
}
posted by zengaichi at 13:08| Comment(2) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2015年02月21日

GCD on freebsd 10

前も試した記憶が…(。・ω・。)

clang -fblocks -o gcd_sample gcd_sample.c -lBlocksRuntime

sample code:(gcd_sample.c)

#include <stdio.h>

int main(int argc, char * argv[])
{
void (^say_hello)(void) = ^(void) {
printf("hello, world\n");
};

say_hello();

return 0;
}

posted by zengaichi at 15:50| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2015年02月06日

64ビット版clang-clでコンパイルしてみた:その3

32bitにクロスコンパイルできることを確認した。
ソースコードはその1と同じ


clang-cl --target=i686-pc-windows-msvc hello.c


確認はその1と同様にdumpbinで確認
posted by zengaichi at 18:56| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

64ビット版clang-clでコンパイルしてみた:その2


ソースコードは次の通り(sample.cpp)で、PATH、LIB、INCLUDEを適切設定してコンパイルしてみた。
同様にdumpbinで確認
これでとりあえずclang-clで64ビットアプリケーションが作れることを確認終了


#include <windows.h>
#include <stdio.h>

LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg) {
case WM_PAINT:
{
HDC hDC = ::GetDC(hWnd);
::TextOut(hDC, 0, 0, "test", 4);
::ReleaseDC(hWnd, hDC);
}
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
::ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);

wc.hInstance = hInstance;
wc.lpfnWndProc = &WndProc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hIcon = NULL;
wc.hIconSm = NULL;
wc.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)::GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "test";

::RegisterClassEx(&wc);
HWND hWnd = ::CreateWindowEx(0, wc.lpszClassName, wc.lpszClassName,
WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
100,100, 200, 200, NULL, NULL, hInstance, NULL);

::ShowWindow(hWnd, SW_SHOWNORMAL);

while(true) {
MSG msg;
LRESULT r = ::GetMessage(&msg, NULL, 0, 0);
if((r == 0) || (r == -1)) {
return 1;
} else {
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
return 0;
}

posted by zengaichi at 18:01| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

64ビット版clang-clでコンパイルしてみた:その1

本当に64ビットのコードを吐くのかという検証をしてみた。
定番のコードhello.c


#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello!\n");
return 0;
}


コンパイル(PATHとLIBは適切に設定)

clang-cl hello.c

dumpbin /headers hello.exeで調べると確かに

Microsoft (R) COFF/PE Dumper Version 12.00.31101.0
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file hello.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
8664 machine (x64)
5 number of sections
54D46D6C time date stamp Fri Feb 06 16:29:48 2015
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
22 characteristics
Executable
Application can handle large (>2GB) addresses

posted by zengaichi at 17:50| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

VS2013でclang(LLVM-3.5.0)を64ビットにコンパイルしてみた

必要なツールはもちろんMicrosoft Visual Studio 2013で以下のツールも必要
・cmake
・python
LLVMとClangソースコードは本家からダウンロードし7-Zipで解凍
下記のフォルダ構成に展開
 llvm-3.5.0フォルダを作り
 llvmへ名前に変えたllvmのソースを配置
 llvmの下のフォルダtoolsに
 clangへ名前に変えたclangのソースを配置
 llvm-3.5.0にフォルダbuildを作成

フォルダ構成

C:\llvm-3.5.0 -+- llvm -+- tools -+-
| |
+- build +-clang

フォルダbuildでcmakeを実行

cmake -G "Visual Studio 12 Win64" ../llvm

LLVM.slnがbuildに作成されるのでそれをクリックしてVSを開き
ALL_BUILDでビルド

続きを読む
posted by zengaichi at 17:40| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2014年12月08日

遅まきながらgnome3を

freebsd 10.1でgnome2が消えていたのでgnome3に移行

レイアウト的にオーバーラップする領域が大きいで手動でスクリーンサイズを追加することに。
(Gnome2のときは1024x768で放置状態)

設定ファイルのxorg.confを/etc/X11/に追加。

i915で1024x768以上にするにはModelineをSection "Monitor"に追加

1600x1200の場合には
Modeline "1600x1200" 162.00 1600 1664 1856 2160 1200 1201 1204 1250

さらにSection "Screen"のSubSectionにModes "1600x1200"を追加。

posted by zengaichi at 22:19| Comment(2) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2013年02月21日

今度は GNUstep をインストール( ̄_ ̄ゞ

すんなり、行くかと思えば苦難の道が( ̄  ̄;

先に libobj2 をインストールしないとclang のデフォルトのabiのバージョンが一致しないということが判明する。

入れなければ単にARCが使えないだけで済むのかしら?と思いつつも

そんなことよりも導入に燃えてしまった。

NSObjectの持つメソッドも少し異なるのでサンプルコードも変更にした。

続きを読む
posted by zengaichi at 22:40| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2012年10月25日

HttpURLConnectionの不思議な特性?

なぜUnix-toolsなんだと言うことは置いておいて

そのままプロパティを設定せずにコネクションがキープアライブのままで接続をするのだが

 同じVMで異なる別のスレッドでキープアライブ時間内だと再利用する実装をしているようだ。

見てくれは new をしているので気が付かないのだが基本クラスにたどり着くと謎が解けた。
posted by zengaichi at 21:03| Comment(2) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2012年03月24日

clang(LLVM)の面白い特性?


clang 3.0で面白い特性に気付いたので試してみました。

同一ファイル内だと思わぬ最適化が行われていました。

 何の効果もなければコールだって削除されてしまうというもの

  バグなのか?最適化なのか?


続きを読む
posted by zengaichi at 20:47| Comment(2) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2012年01月21日

向き不向きのコマンド?

sh のスクリプトで2重起動判定を行うのだが


if [ $(pidof -x $0 | wc -w) > 1 ]; then
echo '二重起動'
fi


で返す値は実際には単独で2正常動作せず? ubuntuだから?


if [ $(pgrep -fo $0) -ne $$ ]; then
echo '二重起動'
fi


の方が汎用的かも?

posted by zengaichi at 21:14| Comment(2) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2011年08月07日

いつの間に無料?

xcode 4 が有料だったが無料になっていた。

なのでダウンロードしインストールし、しげしげとinclude を見ていると MACH 3.0なんだと

 ええ、特別な OS のアプリケーション開発ツールは無料でないと

  ええ、特別なデバイスのアプリケーション開発ツールは有料でないと
posted by zengaichi at 23:37| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2011年07月24日

cast ?

某コードへのコンパイラのバージョンアップ兼ねてビルド中に


warning: dereferencing type-punned pointer will break strict-aliasing rules


その時のキャストは次の疑似コードの通りで

void ** ppv;
char * pc = NULL;
ppv = (void **)&pc;

次のように書き換えるとワーニングは消える。

void ** ppv;
char * pc = NULL;
char ** ppc = &pc;
ppv = (void **) ppc;

あるいは次のように書き換えてもワーニングは消える。

void ** ppv;
char * pca __attribute((may_alias)) = NULL;
ppv = (void **)&pca;


posted by zengaichi at 22:13| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする

2011年05月15日

OpenOcd 0.4.0を入れてみた

購入したJTAGのCDのソフトウェアが古いので

 最新版はどれかと入れてみた。

 cross chain tools は YAGARTO を使って。


 Olimex の JTAG なのでそれもサイトからドライバをアップデート。
 (アップデートしないと OpenOcd がドライバを認識してくれない)

昔のオマケ基盤 LPC2388 を使って動かしたところOK

  ただし、Flash の書込みはエラー?
    何かの拍子で書けていたみたいだが?
posted by zengaichi at 23:15| Comment(0) | TrackBack(0) | Unix-Tools | 更新情報をチェックする