Rokiのチラ裏

学生による学習のログ

ランダムアクセス可能な全ての範囲を無駄なくベクトル演算する

C++

※ 2018/3/11 ライブラリ整理より当機能は削除した。 一々コンテナ毎にExpression templateを記述するのはバカバカしいので、書いてしまった。 ご覧の通り、Expression templateによって式構造を保存して遅延実行を行うため、範囲の無駄な一時オブジェクトは…

python de 同一メゾッド名の型チェック付き呼び分け

バイト中、以下のようなコードを見つけた。 def something1(x,y): print 'something1' def something2(x,y): print 'something2' def something3(x,y,z): print 'something3' def invoke(*args): argc=len(args) exp_message='not match function' if argc==…

index_sequence algorithm

C++

variadic templateへの操作は以前書いたが、index_sequenceも同じように扱えるので書いた。現段階では以下に記載されているアルゴリズムらが実装済みである。 以下のようにテストしてある。

コンパイル時のシーケンス生成は時が経って簡単になった

C++

偶然見つけた以下のエントリ。 cpplover.blogspot.jp saito.hatenablog.jp 2010年...あれから時は経ち、いとも簡単にコンパイル時のシーケンス生成は簡単になった。 #include<srook/mpl/constant_sequence/equ_sequence.hpp> #include<srook/mpl/constant_sequence/algorithm/transfer_array.hpp> #include<iostream> for(auto&& value:srook::constant_sequence::transfer_array…</iostream></srook/mpl/constant_sequence/algorithm/transfer_array.hpp></srook/mpl/constant_sequence/equ_sequence.hpp>

Siriから自宅サーバー監視カメラ(motion)をオンオフするまで

今回もお家ハックネタ。ラズパイとかでも同じ事ができると思う。 motionについては過去のエントリを参照してほしい。 さて、取り敢えずまずはphpからmotionを起動したり殺したりしなければならない。そのためにはroot権限が必要になる。これには、apacheから…

Line Notify APIで遊ぶ

仕事関連の作業や自作ライブラリ開発等の合間に、息抜きとして何かお家ハック的な別の事で遊びたかったのだが、少し良い遊び道具が見つかったので一つ。 Line NotifyというLine社提供のapiがある。これが何なのかについては、公式ページに詳しくあるので参照…

Tuple-based for loops

C++

あまり体調が良くないのだが、適度に頭を使わなくても書けるネタを見つけたのでアップロード。P0589R0にインスパイアされて、そういえば書いておくと楽だろうなと今頃思ったので自分でも書いた。tupleの展開には、いつも再起したりindex_sequence使ったりapp…

Srook range adaptor and Srook range pipe algorithm

C++

※ 2018/3/11 ライブラリ整理より当エントリ内で紹介されている一部機能は削除した。 Srook Range AdaptorとSrook Range Pipe AlgorithmはSTLアルゴリズムとその他諸々の機能をイテレータアダプタによる効率的なアクセスと、パイプライン記法をサポートさせた…

Samba + DAAPとnetdataの導入

何度かサーバーを弄っているエントリーをアップロードしてきたが、自宅には外付けの3TBHDDに動画や音楽などのメディアファイルを全て詰め込んでおり、それを今まではメイン機のデスクトップに接続して使ってきた。しかし、どうせならサーバーに接続してそこ…

パイプラインset_segregate

C++

※ 2018/3/11 ライブラリ整理より当機能は削除した。 set_segregateをパイプライン記法で。まあラップしただけ。 以下のように使う。 std::vector<int> left = boost::irange(0,9) | srook::adaptors::copied, right = boost::irange(7,19) | srook::adaptors::cop</int>…

iterator requirementsにassignableを要求される事による問題

C++

※追記 当エントリは「STLコンテナの気まぐれな実装によってiteratorをassignされる事による問題」というタイトルであったが、これは気まぐれな実装ではなく、標準の文面に規定されたルールの範囲内での話であったため、誤った解釈に基づくようなタイトルや文…

縦横比率を維持しつつ、横幅に合わせて画像を囲うボックスのheightを可変的に取る

仕事(アルバイト)でWebページを弄っている。widthとの比率が考慮されたheightを可変的に取らなければならない問題があり、cssだけでなんとかできないものかと考えていたが、思いつかなかったのでjqueryを使った話。 @530506 画像をimgタグでベタ貼りした時の…

brainf**k インタプリタジェネレータ

C++

何だか凄く早い時間に起きてしまい、特にやることもないのと、最近アニメのセリフをbrainfuckの命令語に置き換える遊びが再発しているので、ジェネレータというかライブラリとも言えぬ小さいヘッダを書く事にした。 こう使う。一応元ネタさんと同じ命令語で…

自宅ローカルサーバー(apache,motion,ping,AP)構築

前書き Amazon dash buttonなどと連携させたmotionサーバー(監視カメラ)を以前構築したわけだが、最近は更に用途が増えてきている。 例えば、最近何故だかマンション内の回線が不安定であるのでpingを飛ばしたりしている。マンション内と断定したのは、定期…

あらゆるSTLコンテナをあらゆるSTLコンテナへ一発変換する(連想配列などを除く)

C++

range adaptorライブラリを書いていて、copiedがあるのだから、集合の種類を指定できても良いだろうと思い、実装する事にした。 以下のように使える。 auto v = boost::irange(0x41,0x47) | srook::adaptors::to_range<std::vector>(); // boost::irangeと併用可能 auto l</std::vector>…

C++14までの標準規格実装に準ずる厳密なhas_iterator

C++

void_t detection idiomのエントリなどから何度か当ブログで登場している、イテレータを持つtypeであるかを判別するメタ関数has_iteratorであるが、これまでのエントリでは以下のような実装を示してきた。 template<class,class=std::void_t<>> constexpr bool has_iterator_v=std::fal</class,class=std::void_t<>…

Intel Code Modernization 2017に参加した

Intel Code Modernization 2017に参加した。Intel流のParallel Computingについての情報やそれに対する知見を得た。その際に個人的に印象深かったAVX512命令であるが、当然ながら今現在でその命令に完全対応したコンシュマー向けのアーキテクチャは存在しな…

swap of variadic templates packages

C++

オレオレライブラリ、Srook C++ Librariesでは、Variadic templateを端的なpackで型情報を保持している。 // simply pack implemention template<class...> struct pack{}; かの有名なAndrew Koenig氏は、swapは基本的な操作であると述べている。 よって、Variadic tem</class...>…

Amazon dash buttonでmotionのオンオフ

動機 以前頂いたVostro 1540の使い道をこれまで色々と試行錯誤した結果、自宅内のLANを用いた様々な用途でのサーバーとして稼働させるという方向性で落ち着いた。最近はその用途の一つとして、motionという動体検知ユーティリティツールを用いた自宅内の監視…

C++11でのムーブキャプチャをシミュレート

C++

C++11の文法内ではラムダ式の構文でムーブする事はできない。 auto ptr=std::make_unique<int>(0); [a=std::move(ptr)](){}(); // From C++14 ググると様々な方法(コピーキャプチャした際にムーブを行わせるラッパー等)が検討されている。その中の1つの方法として</int>…

同じ型が入った std::tuple を楽に書きたい

C++

同じ型が入った std::tuple を楽に書きたい - Qiitaというようであれば、オレオレライブラリsrook.mpl.variadic_playerでも、より簡単に記述できますよ〜、という紹介。 #include<srook/mpl/variadic_player.hpp> #include<boost/type_index.hpp> #include<iostream> #include<tuple> int main() { using int6_tuple_type = // int型</tuple></iostream></boost/type_index.hpp></srook/mpl/variadic_player.hpp>…

例題メモ

問題を作成したのでそのメモ。 Q 整数 という数列がある。その数列中からいくつかを選び、その和を とする。 任意の整数 、 、 を入力(任意の数値が設定できるのであれば何でもいい)し、上記の関係の数列であるか判別しなさい。 解法 この問題の解法は、BFS…

P0145R3の訳

・ツイッターで出題した未定義問題のお詫びと調査と解説について - paiza開発日誌 上記のように少し話題になっていたので、P0145R3の訳をざっくり書く事にした。 Abstract and Introduction そもそもP0145R3とは何についてのpaperなのか。 This paper propos…

fizzbuzzタプル

C++

「fizz型、buzz型、fizzbuzz型を作り、fizzbuzz問題の規則に準じたタプル型を、コンパイル時に生成しなさい」という問題を出して見たので、その解答コードを以下に示す。 C++では単純なコンパイル時fizzbuzzとvariadic templateに対する少しの操作が出来れば…

totoの公式サイトから試合データとかをスクレイピングしてアレコレ

最近、totoという宝くじを買った。つい先ほど、「後二つ当たっていたら三等でした!」という残念メールが受信されたのだが、なんとなく悔しいので、取り敢えずtotoの公式サイトの過去のくじ結果から過去の試合結果やくじ結果などをcsv形式で吐き出させて、そ…

アドベントカレンダーだるい

C++

前書き この記事は、アドベントカレンダーだるい Advent Calendar 2016、18日の記事です。 怠さ蔓延るこの時期ですが、あまりにも怠いと怠いと声に出すのも怠いですね。出来れば、無言でトントンやるだけで怠さを伝えたいものです。無言でトントン...モール…

C++11でタプルを関数の引数へ渡す

C++

C++11の環境ではinteger sequenceが標準搭載されていないので、そういった場合への対処法としてメモ。以下のコードはclang 4.0.0の-std=c++11モードで確認している。 まず単純に再起して、パラメータパックがたまりきった所で呼び出す方法。 inline void foo…

cereal + boost json_parserによるjsonファイル入出力の一例

C++

題名は何だかやたら大々的だがそんな大した事はしていない。 あるところで、シリアル番号を生成したいという案件が来たというような話を伺った。まあ、ちょいちょいとやれば簡単に実装できるとの話だったので、「そうですね」と私は答えた。「そうですね」と…

Variadic templateへのあらゆる操作その2

C++

前回書いていないようなメタ関数を書いてみたので一応。※追記 改善を施しライブラリ化した // First template<class...> struct First; template<class Head,class... Tail> struct First<Head,Tail...>{ typedef Head type; }; template<class Head,class... Tail> struct First<pack<Head,Tail...>>{ typedef Head type; }; template<class... Pack> using First_t=…</class...></pack<head,tail...></class></head,tail...></class></class...>

clangでのnoexcept、式が定数式の場合でも0を送出する事がある

@530506 と思ったらバグ報告されていた。https://t.co/eq4rbFhuZy 淡白な回答だなあ。— roκi (@530506) 2016年12月12日 定義済みのconstexpr関数をop noexceptへ渡すと0が送出されているが、これは規格準拠の挙動ではない。 The result of the noexcept oper…