「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

git resetとgit revertの違いなど

昨今gitはGUIツールで使う人が多いと思いますが、コマンドレベルまでレイヤーを下げることでかゆい所に手が届いたりするんですね。
たとえば今やってる作業を一時的に保管しておきたいなどgit stashが便利です。これはコミットするほどでもない作業をブランチを変えたいなど止む終えない理由で残しておきたい時なんかに使います。

ところで最近知った機能にgit resetとgit revertの違いなんかがあります。両者は似たような機能なのでGUIツールなんかでは片方しかサポートしてないことがままありますが、この違いを知っとくとGUIツールを使うときなんかに何かといいかもです。

さてgit resetとgit revertの違いですが、両者ともコミットの状態をもとに戻したいという意味では同じです。ただresetが履歴を残さないで変更を巻き戻すのに対して、git reverの方は履歴はそのままで変更を戻すコミットを作成するという違いになります。

だったらgit resetだけあればいいじゃんか、って思うのですが、バージョン管理の性質上そうはいかないのです。
git revertは戻したいコミットも残した上で変更を元に戻したコミットを上に重ねるという意味になります。
なんでこんな回りくどい方法を取っているかというと、リモートリポジトリに変更の履歴が反映されてて他の人がそれを参照してたりすると大変なことになるので、極力コミットログを変更したくない時にrevertを使います。そうすれば今までの履歴に変更を巻き戻したという履歴が加わってそれがコミットされます。

人間の直観的にはresetのほうが正しい動きなんですけどね。

ちなみにGitHubDesktopでrevertを行うと戻したという履歴が残って、VisualStudioのチームエクスプローラーを使うとresetが内部的に呼ばれるため戻したという履歴は残りません。

git小ネタでした。

【改訂新版】Gitポケットリファレンス

【改訂新版】Gitポケットリファレンス

入門git

入門git

月間PV数が1000を超えました。

なんだろう最近大したネタ書けてないけど大昔に書いた記事がよく閲覧されてて嬉しいんだか寂しいんだか微妙な気持ちになってる。

既に別のところに移動させてあるAppDataのディレクトリを別のところに移動させたい

AppDataを別ドライブに移すってエントリは多く見かけるんですが、すでにあるのを移動させたいってのがあまりなかったので

ここでは別ドライブへのシンボリックリンクを貼ってあるという前提で進めます


①念のためAdominユーザでログインします。
②AppDataの中身を別のドライブにコピーします。
 コピーしてぺ。このエントリを読んでる方は一度AppDataの場所移動を経験済みなはずなので詳細は省略します。
③既にあるリンクを削除します
cmdを立ち上げてcdで移動してCドライブのAppDataに移動します。
えーとAdominで立ち上げるんだったかな
そこには既にシンボリックリンクとしてのAppDataがあるはずなのでdirコマンドを実行して 〈SIMLINKED> AppData が表示されることを確認します。
rmdir AppDataと打ちます
AppDataのシンボリックリンクが消えます。
これを実行したからといってAppDataのデータ本体が消えるわけではないのでご安心を。

ポイントとして

  • 作業ディレクトリがCドライブのAppDataへのシンボリックリンクが張られているディレクトリであること
  • dirコマンドを実行して 〈SIMLINKED> AppDataと表示されること 〈SIMLINK〉はファイルへのショートカットであり〈SIMLINKED〉はフォルダへのショートカットらしいです。
  • rmdirを実行してもAppDataの中身本体が削除されるわけではないこと

シンボリックリンク(ぶっちゃけショートカット)を作成します。
 コマンドに mklink /d AppData 移したい場所のパス と入力します。
 ここでのポイントは

  • mklinkのオプション/d

これ書かないとファイルへのリンクと見なされ失敗します。
わたしはこれでハマりました。えぇ。

以上。

生きるのにポジティブな希望ってどうやったら持てるの

ちがうよぜんぜんちがうよこれは引用じゃなくて本音だよ!

anond.hatelabo.jp

割と簡単にマンデルブロ集合が描けてしまった

フラクタル幾何学(上) (ちくま学芸文庫)

フラクタル幾何学(上) (ちくま学芸文庫)

フラクタル幾何学(下) (ちくま学芸文庫)

フラクタル幾何学(下) (ちくま学芸文庫)

「読まなくてもいい本」の読書案内:知の最前線を5日間で探検する (単行本)

「読まなくてもいい本」の読書案内:知の最前線を5日間で探検する (単行本)

f:id:bignight:20160427203133p:plain

理系の人間には割と常識なのかもしれないけど
この複雑な図がたったの2行の数式で描けるんだよ
C#だけどユーザコントロールとかフォームとか使わないver

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using OpenTK.Input;

namespace opentktest
{
    static class Program
    {
        //表示領域の縦幅
        static readonly double _Height = 4.0;
        //注視点
        static readonly Vector2 _CentralPoint = Vector2.Zero;
        //まんでるぶろ集合描画時の色リスト
        static readonly List<Color> _ColorList = new List<Color>();

        static void InitializeColorList()
        {
            _ColorList.Add(Color.Black);
            for (int i = 1; i <= 16; ++i)
            {
                int x = 31 + 14 * i;
                _ColorList.Add(Color.FromArgb(x, x, x));
            }
        }

        static void SetProjection(int width,int height)
        {
            // ビューポートの設定
            GL.Viewport(0, 0, width, height);

            // 変換行列の初期化
            GL.LoadIdentity();

            // 描画領域の設定
            double sideY = _Height * 0.5;
            double sideX = sideY;
            GL.Ortho(_CentralPoint.X - sideX, _CentralPoint.X + sideX, _CentralPoint.Y - sideY, _CentralPoint.Y + sideY, -1.0, 1.0);
        }
        static void DrawMandelbrot(double xMin, double xMax, double yMin, double yMax, int screenWidth, int screenHeight)
        {
            double xDiff = xMax - xMin, yDiff = yMax - yMin;
            ++screenWidth; ++screenHeight;
            GL.Begin(BeginMode.Points);
            for (int i = 0; i < screenWidth; ++i)
            {
                double x = xMin + xDiff * (double)i / (double)screenWidth;
                for (int j = 0; j < screenHeight; ++j)
                {
                    double y = yMin + yDiff * (double)j / (double)screenHeight;
                    GL.Color3(_ColorList[Mandelbrot(x, y, 16)]);
                    GL.Vertex2(x, y);
                }
            }
            GL.End();
        }
        static int Mandelbrot(double re, double im)
        {
            return Mandelbrot(re, im, 16);
        }
        static int Mandelbrot(double re, double im, int nMax)
        {
            double x = 0.0, y = 0.0, x1, y1;
            for (int n = 0; n < nMax; ++n)
            {
                x1 = x * x - y * y + re;
                y1 = 2.0 * x * y + im;
                if (x1 * x1 + y1 * y1 > 4.0) { return n + 1; }
                x = x1; y = y1;
            }
            return 0;
        }

        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {


            InitializeColorList();
            

            using(var game = new GameWindow())
            {

                game.Load+=(sender,e)=>
                    {
                        
                        game.VSync = VSyncMode.On;
                        GL.ClearColor(Color4.Red);
                        SetProjection(game.Width, game.Height);
                    };
                game.Resize += (sender, e)=>
                    {
                        SetProjection(game.Width, game.Height);
                        //GL.Viewport(0,0,game.Width,game.Height);
                    };
                game.UpdateFrame+=(sender,e)=>
                    {
                        if(game.Keyboard[Key.Escape])
                        {
                            game.Exit();
                        }
                    };
                game.RenderFrame += (sender, e) =>
                    {
                        GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

                        GL.PointSize(1.0f);
                        double sideY = _Height * 0.5;
                        double sideX = sideY;
                        DrawMandelbrot(_CentralPoint.X - sideX, _CentralPoint.X + sideX, _CentralPoint.Y - sideY, _CentralPoint.Y + sideY, game.Width, game.Height);

                        game.SwapBuffers();
                    };

                game.Run(60.0);
            }

        }
    }
}

via:
[C#][OpenTK] マンデルブロ集合の描画 - クソネミ( ˘ω˘ )
Chapter 0: Learn OpenTK in 15' | OpenTK

誰にも言えなかったこと

熊本で地震があったなんて全然現実感がない
避難生活を送ってる人がいるなんて全然実感がわかない
どうしてだろうどうしてだ
まるで熊本も平穏な日常を送ってる世界から異世界に転生したみたいだ
どこかに熊本も平穏な日常を送ってる世界があるんだ
千羽鶴の一件まで全然実感がわかなかった
千羽鶴の一件で突然実感が襲ってきた
千羽鶴はだからそれはそれでよかったんじゃないか

世の中にはな、バージョン管理システムを使わない文化もあるんだよ!

ネットにもつながない。完全にスタンドアローンだ。
だからXPを現役で使えるんだな。
メリットは特にない。