タグ

2015年9月25日のブックマーク (30件)

  • その12 イテレート中のSTLのlistから要素を安全に削除する方法

    ホーム < ゲームつくろー! < Programming TIPs編 その12 イテレート中のSTLのlistから要素を安全に削除する方法 STLのコンテナは「イテレータ」によって要素を取り出します。この時良くあるのが「ある要素をチェックして、必要が無くなった場合はリストから削除する」という作業です。例えば描画オブジェクトのリストからもういらなくなったオブジェクトを除く時などこの作業が必要になります。 イテレート中のリストから要素を除く場合、ちょっと注意しないと思わぬバグが誘発します。この章ではイテレート中のリストから要素を除く方法をまとめます。まさにTIPsです(^-^;。 ① まともにやるとあっさりバグ 例として、int型のリストに0~9までの要素がこの順番で登録されているとしましょう。このリストをイテレートして「5」を取り除きたいとして、次のようなコードを書きました:

  • より自由なFreerモナドをSchemeに - Qiita

    data Freer f a where Pure :: a -> Freer f a Impure :: f x -> (x -> Freer f a) -> Freer f a instance Monad (Freer f a) where return = Pure Pure x >>= k = k x Impure fx k' >>= k = Impure fx (k' >>> k) Pure に関しては Free と同じだが、 Impure の方は f x の値とそれを使う計算(継続)を合わせて持ち回り、 >>= で値を計算するのではなく継続を組み立てるようにしている。 >>> は Category クラスにおける射の合成で、ここでは Kleisli 射を合成して k' をした後に k をする計算を作っている。 先述の通り、この定義は Operational モナドと同一だが、

    より自由なFreerモナドをSchemeに - Qiita
  • C++11 の乱数を使う - C++ プログラミング

    C++11 には、乱数を生成する仕組みが新たに用意されました。 これまでも rand 関数という 0 から RAND_MAX までの疑似乱数を int 型で返す関数がありましたけど、新しく搭載された乱数ではより高度な疑似乱数や、さまざまな数学的な分布など、目的に似合う乱数を取得することができるそうです。 ここでは "メルセンヌ・ツイスタ" という乱数を使って、C++11 の乱数の使い方を見て行きます。 準備 まず、乱数を使う上で <random> ヘッダーをインクルードします。 そして、乱数を生成して行くことになりますが、C++11 の乱数では、乱数を生成する機能を提供する "エンジン" と、それを目的の値域に整える "ディストリビューション" という 2 つの仕組みを合わせて使用します。 具体的には、"エンジン" として "メルセンヌ・ツイスタ" を使用して、"ディストリビューション"

  • C++ プログラミング

    高級プログラミングの黎明期に主流だった言語のひとつ C 言語に、オブジェクト指向の考え方をプラスした言語です。 機械語に近い言語とも言われ、ポインタを駆使した自由度の高いプログラムができるところが魅力ですが、その分、プログラムを組むのにある程度の熟練が必要です。また、確保したメモリを最後まで面倒見る必要があるため、全体を把握する技量も必要です。 ただ、テンプレートクラスや演算子のオーバーロードなど、役割に応じてしっかりとした設計ができる言語なので、上達するほどに効率的で秩序のあるプログラムを組めるところがとても魅力な言語です。 また、2011 年 8 月 12 日には C++11 規格が制定されて、プログラミングのしやすさが大幅に向上しました。 連想配列を使って値を効率的に管理したり、std::string 文字列と正規表現で高度なテキスト処理が簡単に行えたり、スマートポインタを使ってメモ

  • 関数ポインタ型を混在させて運用する - C++ プログラミング

    C++ では、関数ポインタを扱う方法がいくつかあります。 C 言語式の関数ポインタを使用する方法 std::function<> クラステンプレートを使用する方法 std::bind<> クラステンプレートを使用する方法 ラムダ関数を使用する方法 これらの詳細については 関数のポインタを使用する や ラムダ関数を使用する、std::bind を使って関数を特殊化する でお話しましたけど、ここでは、それらを変数を使って相互にやり取りする場合について見て行きます。 いろんな種類の関数ポインタを混ぜて扱う場合、いちばん柔軟な受け皿になるのが std::function です。 これを使うと、C 言語からの関数ポインタも、std::bind<> を使って整えた関数も、ラムダ関数も、全ての種類を織り交ぜて格納することができます。 std::function<int(int)> func; func

  • c++11 placeholders 使い方 - Google 検索

    2023/01/28 · プレースホルダーの数( N の値)は、10以上実装することが推奨される。 バージョン. 言語. C++11. 参照. LWG Issue 2488. Placeholders should be allowed ...

  • 下町のタクシー会社の求人コンテンツを作ったら新卒2名採用できた話 - イーアイデム「ジモコロ」

    こんにちは、ヨッピーです。日は東京の下町・錦糸町にあるタクシー会社『互助交通』さんにお邪魔しています。「若い人の求人が全然来ないから相談に乗って欲しい」と互助交通さんに依頼されたからです。 不況の煽りをどうしても受けてしまうタクシー業界。大手以外はかなり厳しいらしく、互助交通さんも例外ではありません。なんとか互助交通さんの手助けができないかと思いオフィスを訪れたのですが・・・ とりあえずこちらの写真をご覧ください。 どうですか? めっちゃ昭和で懐かしい雰囲気なんですよ! おじいちゃんの家を思い出すような感覚。こんなんもう「なんとかしてあげたい!」って思っちゃうじゃないですか。 そもそも、タクシーって普段から生活の中で利用することも多いのに、タクシー会社やタクシードライバーの人たちの日常って意外と知られていない気がします。そこで、タクシードライバーのウラ側にフォーカスを当ててみると面白いん

    下町のタクシー会社の求人コンテンツを作ったら新卒2名採用できた話 - イーアイデム「ジモコロ」
  • [C++] Cocos2D-xでゲームを作る前の準備 - Qiita

    色々あって、チーム内で簡単なゲームを作りあって競おう、という話になりました。 プラットフォームやツールなどは自由なのですが、元々C++に興味があったのと、Cocos2D-xはやってみたかったので、思い切って挑戦することにしました。 とはいえ、そもそもC++を書いたことがほぼ皆無なので、色々調べるところからスタートです。 なので、C++というよりは、Cocos2D-xを触っていく仮定で出てきた疑問やメモなどがメインになります。 ちなみに今回作ったゲームは一番下にリンクがあるので、ぜひ遊んでみてください(๑'⌓'๑) 柔軟な配列を利用する C言語などでは通常、配列は固定長です。 しかし、最近の言語では柔軟に配列長を変えることが可能になっています。 C++ではstd::vectorやstd::list、std::mapなどの コンテナ と呼ばれる機能を使って実現するようです。 具体的な使い方は以

    [C++] Cocos2D-xでゲームを作る前の準備 - Qiita
  • C++11メモ @ ラムダ式で無名関数やクロージャ - ラーメンは味噌汁

    2013-12-22 C++11メモ @ ラムダ式で無名関数やクロージャ C++11 ラムダ式(Lambda Expressions)とは C++11からラムダ式で無名関数やクロージャが使えるようになりました。アルゴリズムに渡す関数が直観的に書ける、特定の関数内でしか使わない関数が定義できるなどの利点があります。ラムダ式は以下のような形式で書けます。 [キャプチャの指定](引数の指定) -> 戻り値の指定 { // 関数の中身 } 例)int配列の合計を求める 今までのC++では専用の関数オブジェクトを作成する必要があるので少し面倒でした。 // 合計を求める関数オブジェクト struct TotalFunctionObject { int total = 0; void operator () (int value) { this->total += value; } }; // 関数オ

  • Python (NumPy) と Common Lisp (LLA) で行列積の実行速度を比較する - 不確定特異点

    近年、機械学習や Deep Learning などのデータサイエンス分野を筆頭に数値計算の需要が高まってますが、その中でよく使われているのが Python の NumPy というライブラリです。NumPy を使うことで、動的で柔軟なスクリプト言語上で比較的高速に数値計算が可能になり、NumPy を使った SciPy や matplotlib などのライブラリも充実していることから、近頃の Python 人気が高まっているのだと思います。 個人的には Common Lisp が好きなので、NumPy との速度差が気になるところです。そこで単精度浮動小数点数を要素とする100行100列の行列積を対象に、Python、Common Lisp、C でベンチマークをとって比較してみました。(あ、ちなみに僕は Python も好きですよ。) 実行環境は以下の通りです。 $ uname -a Linux

    Python (NumPy) と Common Lisp (LLA) で行列積の実行速度を比較する - 不確定特異点
  • bitbucketの使い方

    With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud is the native Git tool in Atlassian’s Open DevOps solution. Join millions of developers who choose to build on Bitbucket.

    bitbucketの使い方
  • bitbucketの使い方

    With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud is the native Git tool in Atlassian’s Open DevOps solution. Join millions of developers who choose to build on Bitbucket.

    bitbucketの使い方
  • bitbucketの使い方

    With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud is the native Git tool in Atlassian’s Open DevOps solution. Join millions of developers who choose to build on Bitbucket.

    bitbucketの使い方
  • bitbucketの使い方

  • Practical Recursion Schemes

    Recursion schemes are elegant and useful patterns for expressing general computation. In particular, they allow you to ‘factor recursion out’ of whatever semantics you may be trying to express when interpreting programs, keeping your interpreters concise, your concerns separated, and your code more maintainable. What’s more, formulating programs in terms of recursion schemes seems to help suss out

  • Prusuki Comment Collector

  • Examples of histomorphisms in Haskell

  • IEEE 802.1xによるアクセス管理設定 - ワイヤレスブロードバンドルータ FMWBR-201 - 取扱説明書

    IEEE 802.1xによるアクセス管理設定 IEEE 802.1x機能を使用して、ワイヤレスLANクライアントの認証を行うための設定方法を説明します。 設定は、ワイヤレスLANクライアントに対してのみ有効であり、有線LANクライアントには影響しません。 機能を有効にした場合でも、「ワイヤレスLAN」メニュー画面の「アクセス管理」設定は有効です。 IEEE 802.1xとは 製品のIEEE 802.1x機能を使用すると、ワイヤレスLANクライアントの管理を、製品ではなく、RADIUSサーバーと呼ばれる認証用のサーバーが行います。機能を使用すると、次のことが行えます。 認証されていないワイヤレスLANクライアントからの通信をすべて拒否し、認証されたワイヤレスLANクライアントのみ通信を許可できます。 製品を複数台設置しているネットワーク環境では、各ルータに接続しているワイヤレスL

    IEEE 802.1xによるアクセス管理設定 - ワイヤレスブロードバンドルータ FMWBR-201 - 取扱説明書
  • hostapd: IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/WPA3/EAP/RADIUS Authenticator

    hostapd: IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/WPA3/EAP/RADIUS Authenticator hostapd is a user space daemon for access point and authentication servers. It implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/WPA3/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server. The current version supports Linux (Host AP, madwifi, mac80211-based drivers) and FreeBSD

  • RADIUS認証を用いた無線LAN(AD連携)その① |

    今回はRADIUS認証を用いた無線LAN環境の構築を説明したいと思います。 利用するユーザ情報はActiveDirectoryを利用しますのでADサーバを構築している 環境だと比較的簡単に構築できます。ADサーバを構築していない環境の場合お手数ですが ADサーバを構築してください。 無線LANの認証ですのでRADIUSクライアントにはRADIUSに対応したアクセスポイントを 用意します。今回はNetgear社のWNAP320を用意しました。また、RADIUSサーバには ADのドメインコントローラを利用します。今回の説明はWindows Server 2012 R2で 行います。 概要図としては簡単に書きますが下記になります。端末が無線接続を行う際ActiveDirectoryの ユーザとパスワードを入力して接続を行う仕組みになります。今回の検証ではWindows端末は ADに参加していなけ

  • 理論的裏付~シャノン・ハートレーの定理から分かる、情報量と信号電力・ノイズ電力の関係~ | おすすめ!アンテナとブースター、それにケーブルの選び方

    nfunato
    nfunato 2015/09/25
  • GitHub、プログラミング授業を支援するツール「Classroom for GitHub」開始

    ソースコード共有ツールを運営する米GitHubは、プログラミング教育支援ツール「Classroom for GitHub」を9月22日(現地時間)に発表した。リポジトリ作成や受講者の生徒のアクセス管理など、教育現場での管理作業を効率化できるという。 GitHubは、ソフトウェア開発者向けのソースコード共有ツール。世界で1000万人以上のユーザーが利用しており、既にプログラミング授業で活用されているケースも多いという。 Classroom for GitHubを利用することで、教師は授業の課題を作成し、プライベートな招待用URLを通じて学生に課題用コードを配布できる。教師がリポジトリ作成やアクセス管理を効率化できるだけでなく、生徒の課題提出も容易になるという。 教育機関や教師がサイトから申請すれば、通常は有料のプライベートリポジトリも無料で作成できる。リポジトリの名前は、学校名や講座名に変更

    GitHub、プログラミング授業を支援するツール「Classroom for GitHub」開始
  • Windows で Haskell 環境構築(Stack) - Qiita

    はじめに Haskellと言えば、取っつきにくい言語の代表だと思われる方も多いかと思いますが、開発環境は日々改善されてきています。 今回は、改善されつつある開発環境の最右翼ともいえるStackのWindowsへの導入手順を紹介します。 記事が、皆さまがHaskellに親しむ第一歩となればと思います。 Stackとは Stack https://github.com/commercialhaskell/stack は、プラットフォーム間の差異を吸収したHaskell開発環境を提供する意欲的なツールです。 StackはOS間の差異を吸収するだけではなく、LTS(Long Term Support) Haskellを利用することで、Cabal Hellと呼ばれる依存性問題を解決してくれます。 Stackのインストール 以下のURLからStackのバイナリを取得します。 https://gith

    Windows で Haskell 環境構築(Stack) - Qiita
  • 業務システムに Electron を組み入れるという提案 - Qiita

    今日は、業務システムにElectronを組み入れるという提案をしたいと思います。 Electron のおさらい Electronは、Chromium + Node で構成された、デスクトップアプリ作成環境です。ビューは Chromium のウェブブラウザとしての機能がそのまま使えます。また、Node を組み込んでいるためにNodeの資産がほぼそのまま流用できます。サーバー機能とブラウザ機能の両方を持った環境とも言えます。 業務システムをウェブベースで作るの無駄じゃないですか? いろいろな会社で業務システムと呼ばれる社内だけで使われるシステムがあると思います。そういったシステムは最近では何も考えずにウェブフロントを持ち、APIもウェブベースで、RailsJavaEEなどを使って作られていたりしませんか? ウェブサーバーの持つオーバーキル感 ウェブサーバーを構成する技術は割とオーバーキル感の

    業務システムに Electron を組み入れるという提案 - Qiita
  • Electronでアプリケーションを作ってみよう - Qiita

    はじめに Electronをご存知でしょうか. Electron(旧称: Atom-Shell)は, Atomエディタを開発するために生まれたクロスプラットフォームデスクトップアプリケーションエンジンです. Node.js + Chromiumをランタイムとしており, Atomだけでなく, Slackや先日のBuildで発表されて話題となったVisualStudio CodeもElectronで実装されています. いわゆるWeb系の技術, Node.js + HTML + CSSでアプリケーションを作成できるのが特徴です. 類似した思想のフレームワークとして, node-webkit(NW.js)もありますが, アプリケーションのエントリポイントの考え方等が異なります. このエントリでは, Electronの使い方をサンプルアプリを実装しながら説明していきます. お題 このエントリのお題と

    Electronでアプリケーションを作ってみよう - Qiita
  • zshにpeco + ghqを導入したメモ - Qiita

    流行りからだいぶ遅れた感あるが、peco + ghqをMacに導入したのでメモっとく。 インストール homebrewでインストール。 $ brew tap peco/peco $ brew install peco $ brew tap motemen/ghq $ brew install ghq

    zshにpeco + ghqを導入したメモ - Qiita
    nfunato
    nfunato 2015/09/25
  • 最近ナウイpecoを試してみたメモ

    最近、なにかとpecoというキーワードをきくようになった。 ナウいツールのようなので、流行に乗り遅れないように、僕も試してみた! pecoとは# pecoとは、コマンドラインからインタラクティブに情報源を検索するためのツール。 peco/peco みんな大好き、Emacs helmのようなことが、コマンドラインから可能になる。 インストール# pecoはgo言語でかかれているよう。まだ自分のPCgoが入っていなかったので、まずはインストールした。 パスの設定をする。.zshrcに追記。 # for go lang if [ -x "`which go`" ]; then export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin fi 次に、以下のコマンドでインストール。

    最近ナウイpecoを試してみたメモ
    nfunato
    nfunato 2015/09/25
  • Zabbix API の仕組みを理解する - Qiita

    はじめに Zabbix は、Zabbix API を通して操作することができますが、言語毎に Zabbix API ライブラリ が複数種存在しているため、どれを使用すればいいか分かりづらい状態です。加えて、Zabbix API は非常に膨大なメソッド (Method reference) とオプションを持つため、各種ライブラリが、そのどれだけを保証範囲とし保守するのかまで突き詰めると選定は非常に困難になるでしょう。 これはあくまで私の持論ですが、全容を把握できない保守の保証もないライブラリを使うくらいならば、時間がかかっても大を理解するほうがよいと思っています。Zabbix API を使いたいのに、Zabbix API ライブラリに骨を折るのは末転倒です。 ありがたいことに Zabbix API の仕組みは非常に単純です。この記事では、Zabbix API について説明した後、最小限に

    Zabbix API の仕組みを理解する - Qiita
  • Coursera / Machine Learningの教材を2度楽しむ - Qiita

    遅ればせながら,CourseraのMaechine Learning (Stanford University, by Andrew Ng)を受講している.もちろん説明動画も有益だが,このコースの良さを際立させているのが,毎回出されるプログラミングの課題である.ただMatlabのコードなので,後で復習できるようにPythonに書き換えたくなってきた.(他の方で,同じ取り組みの紹介例がInternetで見受けられる.) ここでは,"Coursera / Machine Learning"の教材を(Pythonで)2度3度楽しむやり方を紹介する.また関数最小化で用いる,scipy.optimize.minimize() について説明する. コスト関数とその導関数 Machine Learningの教材では,コスト関数を作成し,それを最小化するパラメータを探索する,というものが多い.Matlab

    Coursera / Machine Learningの教材を2度楽しむ - Qiita
  • Pythonで実装 PRML 第1章 ベイズ推定 - Qiita

    import numpy as np from numpy.linalg import inv import pandas as pd from pylab import * import matplotlib.pyplot as plt #From p31 the auther define phi as following def phi(x): return np.array([x**i for i in xrange(M+1)]).reshape((M+1, 1)) #(1.70) Mean of predictive distribution def m(x, x_train, y_train, S): sum = np.array(zeros((M+1, 1))) for n in xrange(len(x_train)): sum += np.dot(phi(x_train[

    Pythonで実装 PRML 第1章 ベイズ推定 - Qiita
    nfunato
    nfunato 2015/09/25