Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

iOS/macOS

macOS Catalina Libraryファイルの属性をnohiddenにする

$ xattr -d com.apple.FinderInfo ~/Library/ $ chflags nohidden ~/Library/

macOSにて同一のシンボル名のダイナミックライブラリをロードしたらどうなるか

macOSにて同一のシンボル名を持つダイナミックライブラリをロードしたらどうなるかを検証します。 前提条件として、ダイナミックライブラリはインストールパスに@rpathが指定されていることとします。 絶対パスが指定されている場合は、全く異なる動作をしま…

macOS Application バイナリが持つentitlementを知りたい

$ codesign -d --entitlements :- /Applications/Hoge.appアプリ例その1) Executable=/Applications/Hoge.app/Contents/MacOS/Hoge <plist version="1.0"> <dict> <key>com.app…</key></dict></plist>

macOS コードサインを確認するコマンド

$ codesign -dvvv libblock.dylib Executable=/Users/pebble8888/Library/Developer/Xcode/DerivedData/block-dfwlkkoafjhqccbfqxydkmopdyll/Build/Products/Debug/libblock.dylib Identifier=libblock Format=Mach-O thin (x86_64) CodeDirectory v=20500 s…

C++のシンボルテーブル

macにはnmというシンボルを見るコマンドがあります。 namespace MyNameSpace {class MyObject { public: MyObject(); };MyObject::MyObject() { printf("aa\n"); }} 上記のコードをダイナミックリンクでコンパイルしたモジュールの出力をみてみます。 $ nm a…

macOS環境にてバイナリをdisassembleする

~$ cat main.c #include <stdio.h> int main(int argc, char** argv) { int a = 2; int b = 3; int c = a + b; return 0; } ~$ cc main.c ~$ otool -tvV a.out a.out: (__TEXT,__text) section _main: 0000000100000f80 pushq %rbp 0000000100000f81 movq %rsp, %rbp </stdio.h>…

UIColor色のRGB値

(red, green, blue, alpha)UIColor.gray (0.5, 0.5, 0.5, 1) UIColor.lightGray (0.666, 0.666, 0.666, 1) UIColor.darkGray (0.333, 0.333, 0.333, 1) UIColor.magenta (1, 0, 1, 1)

macOSにてrustプロジェクトのprofileを取る

### cargo-profiler インストール $ cargo install cargo-profiler実行するにはbinを含むrustプロジェクトの存在するディレクトリで、 $ cargo profiler callgrind を実行します。 ライブラリモジュールの場合のやり方が分かっていません。参考: cargo-profi…

macOS 10.15 catalina zshrcのgitプロンプト設定

macOS 10.15 catalina からデフォルトシェルがbashからzshrcになりました。 今までいい感じだったコマンドプロンプトを作り直さないといけません。やれやれですね。 今までのbashの設定とほぼ変わらない形で以下を作ってみました。 ブランチ名の右側の記号が…

macOS の git gc で warning: unable to unlink '.git/objects/ff/xxx': Operation not permitted

macOS で git gcしたときに、warning: unable to unlink '.git/objects/ff/xxx': Operation not permitted というメッセージが表示される現象の対応方法です。 .git ディレクトリに移動して、以下のコマンドを打ちます。 chflags -R nouchg * error: failed …

xcode address sanitizerでヒープ破壊箇所を検出する

xcode address sanitizerでヒープ破壊箇所を検出してみます。 - (void)viewDidLoad { [super viewDidLoad]; uint8_t* a = malloc(16); memset(a, 0, 17); } 普通に実行してみると、 どこで破壊されているのか分かりませんね。 これをソースの行レベルで検出…

macOSにSPTKをインストール

macOS 10.12.4 xgrを動かすのに必要なのでconfigure前に入れておきます。 $ brew cask install quartz あとは、 SPTK-3.10.tar.gzをDLし、 $ configure $ make $ make install したら完了です。 参考 SPTKの使い方 (1) インストール・波形描画・音声再生 - …

iOS/MacOSXのvDSP関数、多すぎてなかなか見つけられないのをなんとかする(応用編)

複素数を扱うためにvDSP.hで定義された構造体 typedef struct DSPComplex { float real; float imag; } DSPComplex; typedef struct DSPSplitComplex { float * __nonnull realp; float * __nonnull imagp; } DSPSplitComplex; 1次元高速フーリエ変換 vDSP_c…

Rx メモ

RxSwiftとRxCocoaの区別がわかりづらいのでメモ。 RxCocoaはUIKit,NSFoundationなどに特化したiOS/macOS環境特有の機能。 RxSwift combileLatest 仕様:複数の変数のいずれかが変更された場合にそれぞれの最新の値をまとめて受け取る 使い道:2つのUITextField…

iOS10のSpeechToText APIを使って日本語PodCastをテキスト化してみる

iOS10で公開されたSpeechフレームワークを使って日本語PodCastをテキスト化してみました。 結果から言うと、テキスト化は可能でしたが、品質はかなり悪く実用として厳しかったです。 某IT系PodCastのファイルを食わせて見たんですが、 「ジャバスクリプト」…

iOS/OSXにおけるスレッド優先順位

iOS/OSXではスレッドスケジューラーの出来が良く、細かい設定が可能である。 例として、CoreAudioでのコールバックスレッドのスレッドポリシーがどうなっているかみてみる。 OSX 10.11.6 1.6GHz Core i5 standard policy_count 0 get_default 1 importance 3…

MacBookAirのOSX復元、ネットインストール

⌘+Rで再インストールしようとしたらEl Capitanしか出てこない。 うげ、戻せないのかと思って、optionキーを押しながら電源を入れ、WiFiを使ってネットインストールを試みる。 ディスクをクリアしてインストール画面が出たら、Mountain Lionのインスールが始…

MacBook ディスクアクセス速度比較

MachineWRITEREADDisk MacBook Pro (2010)43MB/s59MB/sHD MacBook Pro (2010)170MB/s184MB/sAPPLE SSD TS512C MacBook Air (2012)230MB/s441MB/sAPPLE SSD TS128E MacBook Pro Retina(Mid 2014)704MB/s726MB/sSSD (YouTube) MacMini(Late 2014)737MB/s744.3M…

OSXのAudioUnit自作ガイド

OSXのAudioUnitを自作する場合は、Appleの以下のサンプルソースを参考に作るのが、もっとも早道です。 TremoroUnitというトレモロ効果を与えるサンプルです。 Core Audio Utility Classes ビルドしてできたTremoro.componentをどこにインストールすればいい…

MacOSX 10.9(Mavericks)にnginx+php簡易開発環境を作る最短手順

MacOSXで時間をかけずにphp動作検証環境を作る手順書です。 環境 MacOSX 10.9.5(Mavericks) brewはインストール済 MacOSXログインユーザーはpebble8888でドキュメントルートは/Users/pebble8888/wwwを使う。 php-fpm,nginxは手動で起動する。 $ sw_vers Prod…

MacOSX10.10でサクラエディタを使う(parallels coherenceモード)

MacOSX 10.10でサクラエディタが動きました。 この画面見るとどうなってんだ?という感じです。 どういう仕組みになっているかというと、 ParallelsはVMWareやVirtualBoxと同じ仮想環境を構築するアプリです。 そして仮想環境にWindowsをインストールします…

iOS UIWebViewでのJavaScriptのデバッグ

1) JSに以下のようなデバッグログを埋め込み console.log( "hoge" ); 2) iOS Simulatorで実行する。 3) Safariを立ち上げ、開発メニューからiOS Simulatorを選択し、開いているサイトを選択する。 開発メニューを表示するには「環境設定」-「詳細」-「メニュ…

shellshock

MacOSX 10.9もshellshockの対象です。 OSX10.9.5にアップデートした後に穴塞がれたのかなと思って試してみたら、 ~$ x='() { :;}; echo VULNERABLE' bash -c : ~$ VULNERABLE ふさがれてねーじゃねーか。 どうやら、Appleのサイトからパッチを自分でDLしない…

PolyglotsというiOSアプリ

Wordhoardに似たアプリがiTunesで売られているのに気がつきました。 POLYGLOTS(ポリグロッツ)ワンタップ英語辞書搭載の英語ニュースアプリPOLYGLOTS inc.教育無料 6月から売ってたのか、まったく気がつかなかった。 使ってみましたが、さすが、企業レベル…

MacOSX 10.9のphp環境構築

1) /etc/apache2/http.confの #LoadModule php5_module libexec/apache2/libphp5.so のコメントアウトを解除する。 2) /etc/php.ini.defaultを/etc/php.iniにコピーする。 3) sudo apachectl start 4) デフォルトのDocumentRootは "/Library/WebServer/Docum…

MacBook Air でShift+F12

MacBook Aire で[Shift + F12] を動作させるには、[option + fn + F12]を押せばよい。 ちなみに、DreamWeaverでブラウザで表示確認するためのショートカットコマンドです。 絶対忘れそうなのでメモメモ。

ハードドライブのMacBookProでXcodeビルド時間を短縮する方法

ハードドライブのMacBookProでXcodeビルド時間を短縮する方法です。 MacBookProではハードドライブ(HDD)とソリッドステートドライブ(SSD)の2種類が選べます。 Xcodeで開発する人はSSDを選ぶべきです。 小さなサンプルをビルドするだけならよいですが、ソー…

好きなソフトウェア技術書TOP5

ネタがないので、本棚にある好きなソフトウェア技術書でも紹介することにする。 あまり本マニアではないので、多分すごく偏っていると思う。 1) Effective-C++ Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)作者: スコットメイヤーズ,小林健一…

Windowsの美しいテーマ(壁紙)をMacで使う

Windows7以降、壁紙を拡張したテーマというファイル形式が新しく出てきました。 画像ファイルと音声ファイルをまとめて圧縮したものなのですが、 テーマの場合はMacの壁紙に設定するのに若干手順が必要なのでその手順です。 Microsoftが無料で提供する壁紙の…

MacOSXにPlayの環境をセットアップする

さて、Ruby on railsもなんとなく理解できたので、別のWEBフレームワークも試してみたい。 ということで、目をつけたのがJavaのMVCフレームワークであるPlay。 JavaのMVCフレームワークというとStrutsがデファクトスタンダードらしいですが、 今から始めるな…