Steamとかの影響で例年ほどフリゲが遊べてないのが心残りだけど、せめて今年遊んだフリゲについて書き残しておこうと。すべて書くのは無理なので心に残ったものを。
続きを読むC++11とか
主に競技プログラミングとかで使いそうなところを。
auto
#include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<int> v; for (int i = 0; i < 5; i++) { v.push_back(i); } for (auto it = v.begin(); it != v.end(); ++it) { cout << *it << endl; } return 0; }
配列とかー
#include <iostream> #include <array> using namespace std; int main() { array<int, 10> ary; ary.fill(10); for (int i = 0; i < ary.size(); i++) { ary[i] = i * 2; } return 0; }
ary={}とはおさらば。配列にメソッドがあるっていい。
範囲for文
#include <iostream> #include <array> using namespace std; int main() { array<int, 30> ary; ary.fill(0); for (const int n: ary) { cout << n; } return 0; }
大体foreach的なものだと考えていいのかな。
ラムダ式
#include <iostream> #include <array> #include <algorithm> using namespace std; int main() { array<int, 50> ary; ary.fill(0); for (int i = 0; i < ary.size(); i++) { ary[i] = i; } auto cnt = count_if(ary.begin(), ary.end(), [](int x){return x % 2 == 0;}); cout << cnt << endl; return 0; }
外部で関数オブジェクトを作らずにその場で作れるようになるのが便利。
x-finderの検索をffxで
久しぶりにx-finderの設定を弄っていました。というのも、ファイル検索がデフォルトのままでは貧弱だったからです。
Everythingなどの連携も考えましたが、とりあえずx-finderの検索ソフトとして作られているffxを使ってみることにしました。
ffxをダウンロードしたら、実行ファイルをx-finderと同じ場所に置いときます。
それからx-finderの検索のプロパティのパスを
"%X-Finder%ffx.exe" -l "%Current%" -t "%X-Finder%found.ini" -x "%X-Finder%xf.exe" -s rqm
と書き換え。オプションの効果などは付属のりどみに簡潔に書かれています。
これだけでも一応検索はできるのですが、クリップボードを使ったほうがいいです。
詳細設定のクリップフォルダのパスに下の設定を追加すると検索結果がクリップボードで開けます。
,Extra:%X-Finder%found.ini
検索が便利になると画像フォルダの整理も捗ります…。
参考サイト
コマンドライン入力をviに
echo 'set editing-mode vi' >> ~/.inputrc
たった一行でできます。あとは、inputrcを読み直せばviモードになります。
ちなみに、コマンドラインの入力はデフォルトではEmacsモードになっています。
ddとか、Dや、cwができてうれしくなります。
履歴を遡るのも、jkキーでらくらく。回数指定もできます。あと、履歴検索が強力です。/commandとかでcommandを入力した履歴をさかのぼれます。
ただ、インサートモードとノーマルモードの見分けがつかないのが欠点かもしれません。他のウィンドウから戻って入力したら、ノーマルモードのままだったとかよくあります。なれるしかないですが…。
OpenGLでシェルピンスキーのギャスケット
プログラミングで図形ってどうやって書くの?的なことを聞かれたので、それらしいのをやってみました。
OpenGLの準備*1
GLUTを使います。まずはwindows用のGLUTを持ってきます。
Nate Robins - OpenGL - GLUT for Win32
ヘッダファイルを「追加のインクルードディレクトリ」に追加、libファイルを「追加のライブラリディレクトリ」に追加、dllファイルは実行ファイルと同じ場所に置くかSystem32へ。多分これで動くはずです。
シェルピンスキーのギャスケット
#include <glut.h> #include <stdio.h> struct Pos { GLdouble x, y; }; void triangle(int n, Pos a, Pos b, Pos c) { //頂点(a,b,c)を線で結ぶよ! glBegin(GL_LINE_LOOP); glVertex2d(a.x, a.y); glVertex2d(b.x, b.y); glVertex2d(c.x, c.y); glEnd(); if (n < 1) { return; } else { Pos d, e, f; //頂点(a,b,c)の中点を取得 d.x = (a.x + b.x)/2, d.y = (a.y + b.y)/2; e.x = (b.x + c.x)/2, e.y = (b.y + c.y)/2; f.x = (a.x + c.x)/2, f.y = (a.y + c.y)/2; triangle(n-1, a, d, f); triangle(n-1, d, b, e); triangle(n-1, f, e, c); } } void display(void) { Pos a, b, c; //画面中央が(0,0) a.x = -0.9, a.y = -0.9; b.x = 0.0, b.y = 0.9; c.x = 0.9, c.y = -0.9; triangle(5, a, b, c); glFlush();//更新 } int main(int argc, char *argv[]) { glutInit(&argc, argv);//初期化 glutInitDisplayMode(GLUT_RGBA);//表示モード設定 glutCreateWindow("GLTest");//ウィンドウ生成 glClear(GL_COLOR_BUFFER_BIT);//塗りつぶし glutDisplayFunc(display);//描画関数へのポインタ glutMainLoop(); return 0; }
実行結果
再帰で短くかけました。再帰を使ったプログラミングは、楽しいです。
参考サイト
*1:VisualStudioでやってます
PHPとかWPの導入メモ
例*1のサイトの改装にWordPressを使うのですが、どうやらPHPの知識がないときつそうです。というわけで頑張ります。
PHP動かしたい!
というわけでまずは環境から。
PHPはサーバーサイド・スクリプト言語として利用されており、Webサーバ上で動作し、Webサーバ上でPHPスクリプトの文書が要求されるたびに、そのPHPスクリプトが実行され、結果をウェブブラウザに対して送信する。
PHP: Hypertext Preprocessor - Wikipedia
うぃきより。というわけで、ローカル開発環境が必要になるわけです。仮想マシン上でそれらを構築することができますが、面倒なのでXAMPPを使います。
XAMPPのインストールが完了したら、Apacheを起動してからhttp://localhost/xampp/に飛びます。おめでとうページが表示されたらおーけーです。
あと、初期の状態だとXAMPPの管理ページに誰でもアクセス出来る状態なのでユーザー認証を設定します。あとMySQLの rootパスも設定しておきます。
お次はPHPの設定、php.iniで文字化け対策をします。あと、webサーバーであるApacheの設定もちょっと見ておきます。多分デフォルトのままで問題ないです。test.phpなどを作ってhtdocs*2に置いて表示されればおーけーです。
WordPressも動かしたい!
あとついでにWordPressも入れておきます。まずはデータベースを作ります。次に、公式サイトからWordPressをダウンロードしてきて、htdocs下に置きます。http://localhost/wordpressにアクセスし、データベース名やユーザー名の設定、そしてサイトの情報を入力すれば完了です。
インストール後のメッセージが可愛かったです。
WordPress がインストールされました。もっと何か作業をしたかったですか ? がっかりさせてゴメンナサイ。これだけです !
C# + VisualStudioでのフォームアプリ制作メモ
まずは、ファイル>新規作成>プロジェクトで新しいプロジェクトの作成します。作成するプロジェクトの種類はC#の欄にある「Windows フォーム アプリケーション」です。そうするとあっという間にフォームアプリのひな形が出来ます。
見た目を作っていく
最初から幾つかのファイルがありますが、基本的にはForm1.csを弄っていきます。Form1.csにもいくつか項目がありますが最初はForm1.cs[デザイン]を弄りましょう。ツールボックスからコントロール*1を選び、マウスでコントロールを好きな所に配置してビルドするだけで、アプリが作れます。
ですが大抵の場合ボタンのテキストを変えたい、背景色を設定したいなどのもっと詳細な設定が必要になってくると思います。そんなときはコントロールのプロパティを設定しましょう*2。例えばボタンのテキストを変更したい場合、Textプロパティの値を書き換えるだけで反映されます。
どこで実装されているか
コントロールの実装はForm1.Designer.csで行われています。例えばForm1.cs[デザイン]でボタンを設置したとした時の例です。
Form1.Designer.cs
namespace WindowsFormsApplication1 { partial class Form1 { //省略 #region Windows フォーム デザイナーで生成されたコード /// <summary> /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(105, 114); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(284, 262); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button button1; } }
コントロールが生成され、プロパティ値が設定されていますね。
ボタンでなにかしたい
各コントロールにはイベント*3というのが設定出来ます。例えばボタンをクリックしたとき「こんにちは!」とか表示されるダイアログを出したい場合です。プロパティを開き、雷マークをクリックすれば、イベント一覧が見れます。そこにあるClickイベントをダブルクリックすれば、Form1.csにイベントが自動生成されます。
あとは実装するだけです。
Form1.cs
//usingとか省略 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //ボタンクリックイベント private void button1_Click(object sender, EventArgs e) { MessageBox.Show("こんにちは!", "dialog"); } } }
ボタンを押すと、ダイアログがでてきます。
ちょっとしたアプリならすぐに作れてしまいそうですね。ゲーム制作の補助ツール*4の制作にも使えないかなと考えてます。