2016年02月05日

babelでECMAScript6から5にトランスコンパイルする

ECMAScript5 いわゆるJavaScriptは、オブジェクト指向も中途半端で
カプセル化もできないし、クロージャ内のthisや、prototypeチェーン
など、使いにくい
importもないので依存関係が・・・

と、問題も多いので

改善された ECMAScript6を使いたいが、まだブラウザが対応していない
ので、ECMAScript6で書いたコードを JavaScriptにコンパイルするのが
babelです

http://qiita.com/YukiMiyatake/items/497e2fe807d09141e000
http://qiita.com/YukiMiyatake/items/d1dc402698ec78df65c5

と、babelと gulp(自動コンパイル)をインストールし設定して
ECMAScript6からJavaScriptに変換は出来ました


狙いはそのあとで、babelに型情報をつけた Flow型式を、babel-plugin-asm-jsを使い
asm.js にコンパイルしてしまおう!

そうすれば ECMAScript6で書いたコードを 高速なasm.jsに変換できる!

と思ったら babel-plugin-asm-js が、正直使い物にならなくて
撃沈・・・ 轟沈・・・

asm.jsを手書きで書くのは色々と面倒なので

結果

emscripten使って C++から書く決意をしたのであった・・・


blogram投票ボタン
posted by ゆき at 03:17 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年12月30日

staticおじさんの恐怖

staticおじさんという存在がいる・・・
http://itpro.nikkeibp.co.jp/atcl/watcher/14/334361/122100450/?rt=nocnt

C言語等の手続き型言語の開発を行い
その後 オブジェクト指向の手法について行けず
クラスメンバを全部staticにし、手続き型と同じようにアクセスする人たち

それが staticおじさん

staticおじさんの何が悪いかは説明しなくてもわかると思うが
まず メンバがstaticなので、複製できない

過去に会ったstaticおじさんのコードは
お客さんの作ったデータベースライブラリだけど
DBクラスのメンバ(たとえばRecordSet)がstaticである
そのため、DBのレコードは常に1つしか保持出来ないので
selectした値をもとに別クエリを投げる方法がないので
魔界SQLでJoinしまくるか、1回発行したクエリの結果を Listに保存して 再度クエリを投げるしかない
現場では後者のやり方でやってて、凄く無駄なので結局全部ライブラリ作りなおしてあげた
もちろん staticおじさんは猛反発し、次の月には私は現場から居なくなったんだけど
その後の話を聞くと、従来のライブラリだと マルチスレッドにしたら、mutexロックしなきゃ何故か動かないので
君のライブラリを採用したよ
と 連絡が来た

そりゃ staticなんだから マルチスレッドに対応してないでしょ・・

そしてstaticおじさんの本質は、staticではなく
(自分の知ってる)古いやり方に固執し、新しい手法を受け入れない事なので
ソース管理も使わず、未だにzipファイルを沢山作って、マージ担当がいる。


そして、今担当している案件がまさにそれで、staticおじさんのコードを移植する仕事だ・・・
ほんと辛い。無理・・・
コードのムダが多すぎて指摘は大量に作って提出してあるが
どれも耳を傾けないんで
とりあえず こちらは、書類で問題点を指摘しておき、エビデンスだけは作っておく
という大人対応


DSC_0287.JPG

あまりに心が汚れたので、 リーダブルコードの本を買ってきた blogram投票ボタン
posted by ゆき at 15:53 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年12月22日

GEEK HOUSE に始めて遊びにいったら 自分のハウス作りたくなったの巻

まず、大雑把に自己紹介をしておきます

みやたけゆき。人よりちょっと低レイヤーが好きな 普通のプログラマです。
システム系も、ゲームも、組み込み系も、サーバ、ネットワーク 雑食です
多分世の中的にはC++er と呼ばれていますが、私の中で比較的C++が強いというだけで
特に言語に囚われずに お仕事しています

実は大学は3ヶ月で中退したのですが、寮に忍び込んでシェア生活をして、リビングで寝泊まりしてました
その後東京に出て、友達とシェアハウスしたり、海外旅行でドミトリ泊まったり、大手のシェアハウスに住んだり
わりとシェアハウスを好んでます



ギークハウスの話を聞いたのは4、5年ほど前で、その時は亀有のシェアハウスで暮らしてました
その後今に至るまで、他のシェアハウスにはお世話になってるけど
ギークハウスには遊びに行きませんでした


Why?


最初、ギークハウスのイメージは、Googleのようなガレージ起業のようなものを想像していましたが
なんとなく ゆるそうだったので、興味をもてませんでした


転機


知り合いに モクモク会があるからと誘われ、ギークハウス新宿に遊びにいきました
最初からモクモクするつもりがなく、話しかけるスタイルです。
会社でもそうだけど、私って会話しながらコーディングするし、実際仕事現場もそういう人多いでしょ??

多分ウザいと思った人いっぱいいるとおもう すみません
でも、それなりに受け入れてもらえたかな??


入居を考える


シェアハウスは元々好きなので入居考えたけど障害が
荷物が多い!!
そう、バンドやってるので音楽機材と衣装が多い
釣りビジネスを準備中なので、釣り道具も多い

荷物を最高にリファクタリングしても6畳+押入れが必要。

トランクルームも考えたけど、頻繁に荷物出し入れするので
部屋のほうがいいし

その条件にあうギークハウスが、数件しかみつからない。。。


じゃあ自分で作ろう


という 軽いノリで、始めようと思いました

あとは、ギークハウス、どこも人数が多いので需要はあるが
供給が足りてない
私は幸いに 供給可能な人間なので、そちら側に回ってもいいかなと。

今 都心から近い 山あり川あり畑ありの田舎を1軒 交渉中です

とりあえず 目標は、都心に1軒、都心の田舎に1軒、田舎に1軒、海外1軒

このぐらいを経営し、ギークハウスとして活動し
ギークハウスを世界中に注目される存在に 創りあげたいと 思ってます


来年から、ちょくちょく色んなハウスに遊びにいくので
仲良くして下さい。

blogram投票ボタン
posted by ゆき at 00:00 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年11月24日

得意言語をきめよう

一応私は C++が得意ということになってますが
Javaも使えます
その他は アセンブラやシェーダ、GPGPUと低レイヤーなら何でも。
しかし、一般的に 難易度の高い言語だらけです!

JavaScript Luaをはじめ、スクリプト言語も使いますが
フレームワークを含め、難易度の低い言語もマスターしようかなと思ったので
どれにするか考えています

結果として RubyとPythonとPHPはどれも十分にSDKがある。しいていうならPHPが多い
が、WebAPIなんて そもそもSDKなくていいよね・・・で




JavaScript。現状Webアプリのフロントで必要なので これは必須科目。
PHP、Python、Ruby :軽量言語の代表
Golang、Erlang,Elixir、C#、Scala: 軽量言語でもないけど一応こっちに入れてみた

とりあえず 軽量言語を真面目に習得しようとおもい
どれにするかを 下記の記事を参考にきめることにしました

http://jp.techcrunch.com/2015/07/29/20150728which-programming-languages-get-used-most-at-hackathons/

アメリカのハッカソンで使われる言語は
Pythonが強いようです
まず Pythonがポイントリード


そして、最重要に考えているのは、よく使われるサービスのAPIが提供しているSDK

Communication APIs
1,Twillo: Android,iOS,PHP,Ruby
2,Yo
3,SendGrid : C#,Go,Java,Node,Perl,PHP,Python,Ruby
4,Moxtra: Android,iOS,JavaScript
5,Mailjet: PHP,Python,Ruby,Java,Node,Go,JavaScript

SocialAPIs
1,Facebook: Android,iOS,UNITY,JavaScript,PHP
2,Twitter:
3,Reddit
4,Instagram
5,Google+: Android,iOS,C#,Go,Java,PHP,Python,Ruby

PaymentAPIs
1,Venmo: Android,iOS
2,Paypal:
3,Stripe: Python,Ruby,PHP,Java,Node,Go,iOS
4,Braintree: Android,iOS,Ruby,Python,PHP,Node,Java,C#
5,Blockchain

GeoAPIs
1,GoogleMap
2,Yelp
3,GooglePlaces
4,EsriArcGIS
5,Mapbox

MusicAPIs
1,Spotify
2,EchoNest
3,SoundCloud
4,GooglePlay
5,Rdio

その他 私の独断で使いたいサービス(追記する
AmazonAWS
Parse
Google+
Youtube



参考
WebAPI一覧
http://webadviser.org/web-tool/web-api-2015/




blogram投票ボタン
posted by ゆき at 06:43 | 東京 🌁 | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年10月04日

Java8

Java8をそろそろ勉強。
Java7は正直ほとんど見てないんだよね 6ぐらいで終わってる
でも8はJavaが大きくかわった一歩なので 調べるべき!


まず、ラムダが出来た。これは大きい
今までは interface classを 無名関数として newしてattachしていた
それは冗長なコードで処理速度も遅く、綺麗なコードではなかった
もちろん classのメンバ関数を作りattachも出来るが
immutableにするほうがベストで メンバ関数で渡すのは アンチパターン
それが、ラムダ式で指定できるのだから
何も問題ない

そして、関数ポインタ(関数オブジェクト)が存在せず
関数オブジェクトを表現するために classをnewするという
C言語にも劣る冗長でオーバーヘッドの多い仕様が改善され
FunctionInterfaceというものが出来たらしい
(細かい中身は追っていないが、これを作った目的考えると、関数オブジェクトのような オーバーヘッドの少ない作りになっているはずである)
既存の関数を関数インタフェースに渡せる。つまり関数ポインタが使えるといっても良い
そして 定義済みの関数インタフェースが提供されているが
これは完全なC#のオマージュであろう。
アイコン業界ではオマージュは晒し処刑対象らしいが
プログラムの世界では、いい方向に向かうなら歓迎だ
そして StreamAPI
C#のLINQ式のオマージュ
こういういい部分は取り入れるべきだろう
LINQ式についてはパフォーマンスに問題があるという人もいるし
誤差範囲という人もいて、速度評価は難しいが
時代の流れや可読性を考えると
速度は誤差範囲内で積極的に使うべきだと思う
C++においては 今のところLINQ式は取り入れないと発表があるが
LINQライクなライブラリもあり
使ってみて評価しようと思う
そのたOptionalやらDataTimeやら
Java8は良くなったと思うが
やはり
ジェネリクスに関して
Object型を経由させる部分が
どうしてもネックになっていると思う
ジェネリクスさえ ちゃんと解決できれば
まだまだ現役言語になると思う


そして 一番危険視してたのが
interfaceのdefault実装
今までJavaという言語は、継承は単一継承しか許さず
interfaceのみ多重で継承させ
実装は単一継承というポリシーを守ってきた
もちろんこれには問題があり、interfaceを継承すると
何度もinterfaceの実装コードを書く必要があるという問題
なぜかJavaにはmixed-in がないため、中途半端と思っていた

今回は本当はJavaのポリシー変えたくないが
いろいろな理由からinterfaceにデフォルト実装をつけれるようになった
どう考えてもJava設計者としては つけたくなかった機能だと思うが・・
そして そのためにJavaでは多重継承が可能になった
そのため 多重継承につきもののダイヤモンド継承問題が発生した

ダイヤモンド継承は簡単にいえば多重継承することで、同じ親クラスが多重に存在し、どれを呼ぶかわからなくなる問題

C++では、多重の親クラスのメソッドを呼ぶ際に、スコープをつけて呼ぶことでかいけつさせているが
多重継承を許可するPythonではC3線形化アルゴリズムという
コンパイラが総合的に判断し、適した方のメソッドを呼ぶ事で解決させる
具体的には最も近い親を呼ぶ
それでも解決出来ない場合はJavaでは C++と同じく、オーバーライドしスコープを指定する

C++の多重継承と implementsによる多重継承の違いは
C++は本当に多重継承なので、インスタンス変数を持つため
状況は更にややこしいが
Javaの場合は interfaceはあくまでinterfaceで、インスタンスをもたない為
static finalでない変数は存在しないので問題ない

というところまで考えて 安心した。
結論で言うと Javaは多重継承ではなく mixed-inを採用したということ

やはり 未だ インスタンス変数まで持つ事のできる真の多重継承は人類にはまだ早い
blogram投票ボタン
posted by ゆき at 14:08 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年10月03日

Elixir

知り合いに ElixirをDisってくれと言われた(w
Elixirは ErlangVM上で動く、並列&非同期処理に優れる
パフォーマンスの良いWebサーバと聞いている
実際に使ってないが、仕組みをみるかぎり
コネクションに対し 軽量スレッドを作成し実行。例外出たら軽量スレッドごと落とす
軽量スレッドとはコルーチンとかファイバーとか言う奴で
普通のスレッドに比べ圧倒的にパフォーマンスが良い
言語はRubyに似た構文
つまり
node.jsはパフォーマンスに優れるがJavaScriptは言語的にサーバ開発、大人数開発には向かない
Erlangは言語構文が特殊で使い辛いので構文はRubyぽくした
Rubyは実行速度が遅いしマルチスレッドしか不可能だがErlangVMにすることで改善
エラーは軽量スレッドを落とすので堅牢である
まさにパーフェクト
その他、言語構造が関数型言語で、基本的に副作用が出来ないので
やはり 堅牢だ
この段階で比較対象にできるのは node、PHP、Ruby、Python以外。
C++に比べるとパフォーマンスは悪いがC++にはまともなWebフレームワークが存在しない&学習コストが高いため
一般的には Webサーバとして比較対象にあがらない
Javaはフレームワークによるが基本的に速い。コンパイル言語だし。
速度比較はわからないが node.jsと同等からそれ以上速い
Servletは爆速
大規模開発には向くが、開発効率としては軽量言語に劣る
Golang
nodeやPlayより速いという話。まだコンパイラの最適化が弱いので今後さらに速くなるだろう
開発効率はあまり情報ないが、Javaより高そう
Elixirのライバルにふさわしいのはこいつ
私の結論では、流行るかはわからないが
GolangとElixirの2つが webサービス開発言語として
頭ひとつ抜けていると思う
Elixirの弱点といわれると
まず セミコロン無し教で、ruby文法に慣れない人は ヤだなー
いちいちendうつのだるい
でもこれは 慣れるしかないとして
Erlangに使われる cowboyのパフォーマンスが気になるところ。
そこそこ軽量という話はあるが、圧倒的に使用が少ないので
不具合など nginxなどに比べて怖いところがある
Elixir作った人も Rubyのコミッターらしいし、Rubyの人が大漁に流れてくるのではないかな??? blogram投票ボタン
posted by ゆき at 03:04 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年09月16日

論理演算子の交換法則と短絡評価

数学が得意という人が
プログラムの論理演算は数学と同じだから簡単といった


否!!

と速攻否定した
そう、けっこう多いんだよ この手の話で不具合が出るパターンってのは


数学では
AかつBなら BかつAは成立
AまたはBなら BまたはAは成立
もちろん 分配法則も結合法則も、ドモルガンの法則も成立する
プログラムでもたしかにどの法則も成立するので
数学とほぼ同じだが 下記のコード(C言語)

if( p && *p > 10 )
if( !p || *p < 20 )

交換法則をつかうと

if( *p > 10 && p )
if( *p < 20 || !p)

上記のコードは pがnullの場合は短絡評価され、後半の演算は行われない(事がある)
ので、null値が入ってきても問題ない
下記のコードは pがnullの場合は 前半の演算で null pointer exceptionを吐き 落ちる

プログラムの場合は 論理演算は短絡評価される事がある
ので、交換法則は成り立たない場合もある

って事で、お気をつけ下さい。


また 上記のコードの評価は、言語により動作も違う
また C++だと、演算子のオーバーロードをしていると、上記でも ぬるぽ したりするので
本当は面倒でも if文を2段にして書くのが正しいです。

blogram投票ボタン
posted by ゆき at 04:23 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年09月11日

Javaの最近

最近あまり Javaを追ってなかったので
というか、Javaの案件あまりやった事ないんですよ 意外と。

Javaって出た当初は触ったけど、出来る人が多いのであまり面白くなかったんですよ

でも最近はAndroidのおかげで、さわる機会もふえた

だけど そのAndroidが JavaSE6で止まってたので。


今は JavaはSE8まで出ています

Androidはなんと SE7に対応しました!

Playframeworkは SE8に対応していて、他のフレームワークも SE8対応多いと思うので
今度 SE8の勉強ついでに、何か作りたいな。


そして 自分に似合わない本を読もうと探してます

デザパタ、UML、プロジェクトマネージ
あたりかな???
blogram投票ボタン
posted by ゆき at 23:17 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

知り合いの就職祝い

知り合いという程でもないけど

ちょっとしたイベントで、卒業してから数年、肉体労働土方で働いてきたが
業界的に限界を感じているので、IT土方になりたいと
ジョブチェンジの相談をもらい

特に何も手をだしてないんだけど
彼は本気っぽかったので、ほっとけば動きだそうだろう
3ヶ月たって動きが無ければ様子をみて
自分の仕事手伝わせたり 友達の会社に投げてみようとおもってたら

やはりすぐに動いて、無事転職決まってました おめでとう

最初は、いきなりフリーランスを望んでいたけど
正社員を経験してからフリーランスの道を模索するようで
最も賢いと思います


わたしは 正社員経験なしで 最初からフリーランスだったけど
こういうのは 極例外


で、その新人さんが OracleのJava検定一緒に受けようと言ってきた

ぶっちゃけ、持っていても業務で使う事ないので、お金の無駄
2万3千とか 受験料かかったり、勉強時間とられたりするけど
まー 楽しく検定とればいいよね

で OK出したので
Java Gold目指して勉強してみますと。


わかった事は 他業種からコンバート組みは たいてい
検定とかを取ると 心が安心するのではないかな。。

ギークハウス界隈とか 集めて何人かで取りに行こう
勉強会も開くぞ!





blogram投票ボタン
posted by ゆき at 22:23 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年03月02日

人工知能&ディープラーニング

ビリヤニハウスに行き ディープラーニングについて色々と質問してきた
まだ具体的に何に使うか 考えてないけど
漠然とこれは凄い技術なので ビッグウェーブに乗るべきだとは思ってます

人工知能、ロボット、人の心。 (TheWave出版) -
人工知能、ロボット、人の心。 (TheWave出版) -


いちおう、Amazonのプライムの無料図書にあったので 買った

仕事しつつ ディープラーニングのお勉強したい blogram投票ボタン
posted by ゆき at 18:35 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年02月19日

Vagrantにgcc4.9.2を入れてるところ

色々な理由があって 苦労しているんだけどね!

なんとか gcc4.9.2はいったよ!

何が厳しいかってとにかく
gccのビルドが2時間かかるってこと・・・

make走らせて2時間して エラー・・・

こんなやり取りを2日ほど繰り返しました


boost 1.55.0
(わけありで 1.57.0にしない)
も無事入った

あとはLLVMやclangも入れる


とにかく パッケージで入らないのは大変ですね・・・

そしてインストール中に暇!!
って事でゲームでもしよ!
blogram投票ボタン
posted by ゆき at 19:12 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年02月18日

Vagrant

今更ながら Vagrantを使ってみた
今はVirtualBox以外にも VMWareとかも使えるみたい
便利そうだけど そのうちDockerとCIもやらないとね

Vagrant+Chefで環境構築ってのもだいたいは読んだけど
今の所まだ使わないかも
基礎知識だけで満足したかな
mongoDBドライバは苦戦中・・・ gccのバージョンアップからしなきゃならないし!


で、色々と状況がかわり、mongoDBはしばらく使わない事になったので別のお勉強はじめます!

次は Vagrantで環境作って色々ヤルと思う。

とりあえず次は Dynamoの情報をゲットしつつ MySQLにC++でアクセス考えてみよ!
blogram投票ボタン
posted by ゆき at 19:34 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2015年02月17日

mongoDB C++ドライバインストール はまり中

ゆきは 実は環境構築が苦手です
苦手っていうか好きじゃないっていうか 早くコード書きたいと
焦るから嫌いなんですね

でも好きになりたいよ〜〜


という事で 自分のMacbookにmongoDB + C++ドライバ構築したけど
色々とはまり中

まず mongoDBのインストール。これは楽だった

その次に C++ドライバなんだけど boost他 色々なライブラリを使います故
boostのインストール。といってもすでの1.57.0 をインストールしているので
そのままboostを指定してビルドし サンプルを実行すると

意味不明のstring内で落ちる
・・・おそらく何かのライブラリのコンフリクトではないかと・・
boostをまず疑い 色々とバージョン変えたりしたが ダメで
もしかすると C++11部分のライブラリかな・・・std::string落ちてるし・・・

MacportとHomebrew混在してたり、OSバージョンアップしたりで
Macの開発環境酷い事なってそうで 一度リセットしたいと思います

で、さくらVPSのCentOSで試したら yum古くて全部ソースからビルドでメンドクサイ・・・
で なんとか終えたものの
サンプルのビルドが出来ない。。。
これも 色々と見直し必要ですが


とりあえず 環境構築で悩まない為に Vagrant+VirtualBox 導入してみました
VMWareもあるんだけどね・・・・

で Vagrant+VirtualBoxで 環境構築にChef使ってみようと思った
今ここまで・・・




タグ:MongoDB C++
blogram投票ボタン
posted by ゆき at 14:22 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2014年09月07日

BSD Users Group CBUG

なんとなく呼ばれたので
CBUG (調布? BSD Users Group)に行ってきました

BSDといえば FreeBSD 2.2.x 時代に メールサーバーとかDNS Apacheその他のサーバー構築して管理してたり
FreeBSD 4.3.x でプロバイダ的な仕事したりで使ってたけど
基本 あまり サーバー側やらないし、やってもLinuxだったのだけど
ひっさびさにBSDの言葉きいたなー

午前中はまったりと プレゼン資料つくったりタイムで
わたしはネットして遊ぶw

そして 昼にみんなでランチ食べに



ご飯食べたあと 巣鴨の下町で ずんだ餅買ったり かき氷食べたり
そこそこ満喫して



いよいよ勉強会ですが ゆるい!!

まー BSDって今あまりニュースもないですし
わりと雑談ペースで 時間が過ぎて行き


いよいよ本番



宴会して終わった

やはり どこにいってもウケてくれるのは PS2の開発の話
PS2の開発の時に ライブラリもらえず、分厚い黒い本渡されて
最初のプログラムは IOポートxx番にxx送るとデバイス初期化できるとかを調べて
初期化して
Linuxのメモリアロケーターを読んで 改良してメモリアロケーター作ったよね
その後は DMA調停まわり メモリ周りのライブラリ作って
わたしは VU1 コプロセッサーで、並列アセンブラを パイプラインストールを気にしながら
自力で最適化して 頂点シェーダー作ってたよなwww

そういう話題が一番ウケました


次は何かわたしも役にたつ事したいなー
次も参加したいです。
タグ:BSD
blogram投票ボタン
posted by ゆき at 00:00 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2013年11月11日

operator[] を右辺値と左辺値 時にふるまいを変えたい

ストリームプログラミングでは << と >> で、入力バッファ、出力バッファと
異なるバッファにアクセスができるが
oprator[] において、そういうことが出来ないだろうか?

理想形は、入力データを何らかの変換を行う hogeクラスについて


hoge[1] = 100; // この場合は 入力バッファにアクセス
int x = hoge[1]; // この場合は 出力バッファにアクセス


こういうことを行いたい。が やり方がわからない、出来ない

// 左辺値の場合はこちら
int& operator[]( const int n )
{
return( in[n] );
}

// 右辺値の場合はこちら
const int& operator[]( const int n ) const
{
return( out[n] );
}


と書いても、全部 int& operator[]( const int n ) の方が呼ばれてしまうし


もうちょっと勉強すればわかるかな?
Cの本を1から読み直そう。
タグ:C++ 悩み
blogram投票ボタン
posted by ゆき at 04:39 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2013年10月29日

Google Code chat tools

今回は 自宅のメインマシンになるのかな? Windows7です。
MacbookProからだったり MBP上のWindows8からだったり 色々なとこから かきます
そう、だいたい 適当です


絶賛 風邪!!
でも大丈夫、コンピュータには感染ってないから ウイルスバスターしなくていいよ!

そんなわけで 一日中寝ています
もちろん 自宅警備もちゃんとしています!


今日も 受信料払え!という過激派を 追い返しました
ほんと うちにはテレビもないんです。
10年間テレビもってません。ゲームも パソコンのモニタでやってるし

あのブラウン管が大きくて邪魔なんです!!
ってことで 地デジチューナー見たことありません


そんなわけで 熱にうなされながら 数学を少し勉強したくなったけど
Webに数式ってかきにくいですよね
ということで おすすめが Code Chat Tools
<img src="http://chart.apis.google.com/chart?cht=tx&chl=x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}" alt="" />
このように書くと


あら素敵、画像になって戻ってきます。
背景色の変え方とか まだ調べてないんですがね。とりま しばらくはダサいまま使います

x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} 

この部分が数式なんですが LaTeX の記法らしいです
ぶっちゃけ そんなの知らないので それ覚えるのが大変です

とりあえず 今のテーマです



みんな大好き FFT 高速フーリエ変換ですね



畳み込み



はい、数学苦手な ちはやさんには、よくわからない領域です

あと LaTeXよくわからない。。。

って伏線はっておいてと。
blogram投票ボタン
posted by ゆき at 23:59 | 東京 ☔ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

Macbookセットアップ!

ってことで ついに、Macを触ることになりました

思い返せばあれです
年末にiPhoneの開発をするよう言われ

iPhone開発にMacとiPhoneが必須なんで貸してください

って リーダーと呼ばれていた人間にお願いしたら

自分で買って持ってきて開発してください。技術者はみんなそうやって開発してます!

って回答され、正直意味不明なんですが
会社で業務命令で Macが必要になった。でも自分で設備投資しろ。会社から補助は出ない
おかしいでしょ? 仮にも私 雇用されてるのに・・・

ってことで MacbookProとiPodTouch5買いましたよ。あわせて20万円

全部自腹で。
年末から会社の社長案件3つ掛け持ちで ずっと会社に泊まってて
正月明け早々に 会社で受け取りましたよ MacbookProを。
初めてMacやiPhone触る 当然開発なんてした事ないけど
1月末が iPhoneアプリの納期とか マジありえないんですけどwww

しかもね、聞いてみると そのリーダーと過去に呼ばれていた人間が会社で使ってるMacbookは
会社のやつなんですよ!
そして使ってるiPhoneは、全額会社から補助が出てて プライベートに使ってるんですよ

絶対 おかしいですよね!! おこですよ。激おこですよ!!

そして、かつてリーダーと呼ばれし今は追いやられた者に 

MacbookとiPodTouch 自腹で買ってきたので開発するために申請お願いします

って言ったら

私物を会社のネットワークにつなぐの、常識的にダメに決まってるでしょ?

って言われて はぁ???? お前が買えといったんじゃない???
もう わけがわからないよ

ってことで 事業部で一番偉い人に相談したら

Macbook3台あるし、iPhone 俺の貸すよ

ってあっさり手に入りました
あまりに激おこなので 親分にそのこと話したら

信頼してるから、俺から情シスに端末の使用許可ももらう

って なんなんですかー? 私の20万円は どうしたらいんですか??

かつてリーダーと呼ばれし、ボクシング部でパンチドランカーになり時々イってる落ちぶれし者 死すべし!
ですよ!


そして 怒りがおさまらず、不要な買い物をした MacbookProを FusionDrive化しましたよ

まずFusionDriveって何?ですよね

SSDってめっちゃ速いんだけど、高いし容量がすくないのね
それに比べ HDDは 容量大きくて安いけど、SSDと比較するとめちゃ遅いの
その2つを 同じ仮想ボリュームとみせかけ
OSが勝手に、よく使うファイルはSSDに、あまり使わないファイルはHDDに
振り分けてくれるのね

つまり 通常の用途においては、ほぼSSD並の速度が出るけど
容量単価は SSDよりかなり安いわけ

たとえば HDDが1000GBで8000円とかとして、SSDは256GBで3万とかするわけで
どんだけお得か。。。
それに 仕事に使ってたり、Windows8も入れる予定だったから、SSDだけじゃ物足りないんだよね
512GBを5万オーバーで買っても 容量が心もとない・・・

そんなわけで、買ったばかりの 名状しがたきMacbookProを
いきなり分解して FusionDrive化しましたよ
おまけに内臓HDDを改造して 外付けUSB DVDドライブにしましたよ

手順は素直に

http://www.syowasangyo.jp/diary/private/6242/2013/04/01/

こんな感じで 

思ったより簡単にFusionDrive化できました。
ついでにメインメモリも限界の32GBにしました
RAMドライブも割り当て 超快適にしましたよ!
VMWare5とWindows8買って その他いろいろ必要なものかったりで
プラス10万ぐらいとびましたね。

合計30万円の投資です!
いいもん 個人事業するときに 創業準備として経費にしてやる!


ってことで その時きめました。
かつてリーダーと呼ばれし、ボクシングでパンチドランカーになり時々イってる落ちぶれて後輩に部長の座を奪われた哀れな者 に対して おこだし
30万円を 所得控除したかったので
会社の雇用やめて、個人事業主に戻ろうと

もともと 個人事業主で仕事始めてたんだけど
気が付いたら 雇用契約にされてたっていう 逆パターンなんだけど


そしたら ちょうどいいタイミングで
年末から 1月の間 ずっと会社に泊まりこみしてて
労働基準法的に アウトだし、事業部長の金額とか超えたら会社的にアウトでしょ

まぁ、本来は 技術力のないほかの人間には出来ない3個案件をおしつけられ、納期も 全部短く
そうせざるを得ない状況を作った 部長以上の人間が怒られるべきものを
わたしが 残業代稼いでる的な ものいいをされ マジ激おこですよ!!

で人事と喧嘩して
人事より 雇用きられ、請負になりました

そう、会社都合による退職!!
ラッキーです!


その後も10月真ん中まで 請負で仕事をしてたけど 先ほど 請負も終え

時間ができたので 色々と遊んでみます
blogram投票ボタン
posted by ゆき at 15:27 | 東京 ☔ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2012年09月04日

memcpy 速くするには・・


memcpyは良く使うだけに、SIMD命令を使い速くならないか
と思って ソースを見てみる
VisualStudio2010 での話だけど

memcpy.asm
にソースが書いてあるので読んでみる




まずプロローグでレジスタの退避や引数処理
memcpyではフレームポインタは作ってない




mov eax,ecx ;V - eax = byte count...

mov edx,ecx ;U - edx = byte count...
add eax,esi ;V - eax = point past source end

cmp edi,esi ;U - dst <= src ?
jbe short CopyUp ;V - yes, copy toward higher addresses

cmp edi,eax ;U - dst < (src + count) ?
jb CopyDown ;V - yes, copy toward lower addresses


領域のオーバーラップを見ている。コピー領域がオーバーラップし かつ、dest>src アドレスの場合
コピー領域が重なるので 後ろからmemcpyする
つまり memmoveと同じ動きをする。memmoveのソースはmemcpyを呼ぶようになっていた
VCではmemcpy=memmove で、オーバーラップもOKのようだ





CopyUp:
;
; First, see if we can use a "fast" copy SSE2 routine
; block size greater than min threshold?
cmp ecx,080h
jb Dword_align
; SSE2 supported?
cmp DWORD PTR __sse2_available,0
je Dword_align
; alignments equal?
push edi
push esi
and edi,15
and esi,15
cmp edi,esi
pop esi
pop edi
jne Dword_align

; do fast SSE2 copy, params already set
jmp _VEC_memcpy


SSE2に対応かつメモリアライメントが16バイト の場合は _VEC_memcpy へ行け
それ以外は Dword_align へ

なんと・・・メモリアラインを16バイトにしていれば _VEC_memcpy
名前からして目的の SIMDによる高速memcpyされるっぽい・・・
アライメントがあってない場合は以下




Dword_align:
test edi,11b ;U - destination dword aligned?
jnz short CopyLeadUp ;V - if we are not dword aligned already, align

shr ecx,2 ;U - shift down to dword count
and edx,11b ;V - trailing byte count

cmp ecx,8 ;U - test if small enough for unwind copy
jb short CopyUnwindUp ;V - if so, then jump

rep movsd ;N - move all of our dwords

jmp dword ptr TrailUpVec[edx*4] ;N - process trailing bytes


このように、アライメントを合わせて DWORDなどでmemcpy行うと。






memcpy 頑張ってるじゃん! 高速化するには

オーバーラップしない前提にし チェック外す
16バイトアライン前提にし アライメントチェック外す
SSE命令で16バイト単位の高速コピーを行う


つまり、edi、esi、ecx に、dest、src、length
設定して _VEC_memcpy 呼べばいい。以上!
(_VEC_memcpyにあたる アセンブラも書いたが速度変わらなかったので・・)


とりあえず、memcpyをよく行うだろう変数は 16バイトアラインしておけば
良いよ。



blogram投票ボタン
posted by ゆき at 23:31 | 東京 ☀ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

Google-code-prettify

ハッカーらしく Blogにコードを埋めるテスト


#include
void main(void){
print "Hello World!";
}



おk。
タブが8タブだったのが気に入らなくて ソース変更して4タブにした
これで戦える! blogram投票ボタン
posted by ゆき at 02:14 | 東京 ☁ | Comment(0) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする

2009年11月13日

TuxGuitar が動かない

ギターやベースのTAB譜を読み書きするソフトとして
PowerTabエディタがありますが、それより進化したらしい
gp4 gp5 形式がありますと。
で、この形式を読み込むフリーソフトとして
TuxGuitar を使おうと思います
こいつはJAVAで動くので 最新のJAVAを入れて
設定して動かしてみたら
Not enough memory to create Java VM
というエラーが。

ちょっと調べてみると、どうやら JREのバージョンが新しくなり
メモリー確保の形式がかわったようで

TuxGuitarのフォルダにある tuxguitar.ini をみてみると

Virtual Machine Parameters=-Xmx50:128:1200P

って行があるので、これを

Virtual Machine Parameters=-Xmx128

と書き換えてやると OK
Virtual Machine Parameters=-Xmx128 -Xms50
とかやると もっといいのかもしれないけど
とにかく動いた やっほーー
blogram投票ボタン
posted by ゆき at 19:31 | 東京 ☁ | Comment(2) | TrackBack(0) | ---- はっかー ---- | このブログの読者になる | 更新情報をチェックする
blogram投票ボタン
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。