Pull to refresh
68
0
zabr @zabr

User

Send message
плюсанул всех трех )
Ну как страдает… местным только лучше в их страну текут инвестиции…
А так иммиграция очень ограничена хорошо в Тае.
12 лет для начала нужно прожить.
Ну либо бизнес открыть и нанять тайцев.
скоро наверно заселят тай ((
уже семьями очень многие переезжают.
а была страна сказка…
внесу еще лепту.
девушку если там искать я бы искал на бедном севере,
где устои тайские не сильно натыкаются на всяких приезжих.
он пишет не ерунду, все действительно так, есть похоже местечки где можно взять такую сопровождающую, она еще и торговаться вместо вас будет ))
массаж хороший трудно там найти…
Лучший делают в БКК насколько я знаю.
и стоит он зачастую дороже чем стандартный.
Выслал автору инвайт, спасибо, хабролюди!
Вас много, а я один. Попробуйте немного позже )
А то вот мне скуластенькие нравятся, а у меня не шварцнегеровские скулы…
оно мне с овальными лицами только покажет?
Хмм… не совсем ясно по типу лицу как с девушкой познакомиться но в целом интересно.
приду домой попробую )
Все Гуд, счас буду пытаться видео записать )))

Формат: {0}|{1}|{2}|{3}
Нужно делать в ASCII.

var pi = new ProcessStartInfo
{
FileName = Application.StartupPath + @"\Gource\gource.exe",
Arguments = outFile + "--log-format custom -1280x1024 -f --highlight-all-users --multi-sampling ",
UseShellExecute = true
};

Поменять на:

var pi = new ProcessStartInfo
{
FileName = Application.StartupPath + @"\Gource\gource.exe",
Arguments = " --log-format custom " + outFile + " -1280x1024 -f --highlight-all-users --multi-sampling ",
UseShellExecute = true
};
озвучены? сведения о украденных сведениях о фальсифированных данных в которых содержатся сведения о других фальсифицированных данных… фак мой мозг…
«а я то всего лишь сказал что в проге по снятию точек в баренцовом морю бага ...»

P.S Мой пост — выдумка.
а кстати возможный вариант )
пробовал. по всякому не работает.
если подберешь поделись )
а [Serializable] по привычке )
Math.Floor может необязателен.
Как получить логи TFS:

1. качаем Visual Studio SDK.
2. В Reference добавить: Microsoft.TeamFoundation.Client, Microsoft.TeamFoundation.VersionControl.Client
3. заюзать примерно такой код на C# ), правила сами замените если нужно )

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Windows.Forms;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace GourceTFS
{
  class Program
  {
    private const string outFile = "output_log.txt";
    const string tfsServerURL = "http://server:8080";

    /* If you want to use Gource with something other than the supported systems, there is a pipe delimited custom log format:  
     * timestamp - A unix timestamp of when the update occured.  
     * username - The name of the user who made the update.  
     * type   - Single character for the update type - (A)dded, (M)odified or (D)eleted.  
     * file   - Path of the file updated.  
     * colour  - A colour for the file in hex (FFFFFF) format. Optional.    
     */

    /// <summary>
    /// method for converting a System.DateTime value to a UNIX Timestamp
    /// </summary>
    /// <param name="value">date to convert</param>
    /// <returns></returns>
    private static double ConvertToTimestamp(DateTime value)
    {
      //create Timespan by subtracting the value provided from
      //the Unix Epoch
      TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());

      //return the total seconds (which is a UNIX timestamp)
      return span.TotalSeconds;
    }

    [Serializable]
    class ChangeItem
    {
      public double timestamp { get; set;}
      public string username { get; set; }
      public char type { get; set; }
      public string file { get; set; }

      /// <summary>
      /// Converts the specified type.
      /// </summary>
      /// <param name="type">The type.</param>
      /// <returns></returns>
      public static char Convert(ChangeType type)
      {
        char _out = '\0';
       
        if (type == (ChangeType.Add | ChangeType.Edit | ChangeType.Encoding))
        {
          _out = 'A';
          return _out;
        }

        if (type == (ChangeType.Encoding | ChangeType.Delete | ChangeType.Branch))
        {
          _out = 'D';
          return _out;
        }

        switch (type)
        {
          case ChangeType.Add:
            _out = 'A';
            break;
          case ChangeType.Merge:
            _out = 'M';
            break;
          case ChangeType.Edit:
            _out = 'M';
            break;
          case ChangeType.Delete:
            _out = 'D';
            break;
        }

        if (_out == '\0')
        {
          throw new ArgumentException("fff");
        }

        return _out;
      }
    }

    static void Main()
    {
      var TFSLogs = TFSLogsList();

      using (var sw = new StreamWriter(outFile, false, Encoding.UTF8))
      {
        foreach (var item in TFSLogs)
        {
          sw.WriteLine("{0}|{1}|{2}|{3}", Math.Floor(item.timestamp), item.username, item.type, item.file);
        }
      }

      var pi = new ProcessStartInfo
             {
               FileName = Application.StartupPath + @"\Gource\gource.exe",
               Arguments = outFile + "--log-format custom -1280x1024 -f --highlight-all-users --multi-sampling ",
               UseShellExecute = true
             };

      var p = new Process {StartInfo = pi};
      p.Start();

      Console.Read();
    }

    static List<ChangeItem> TFSLogsList()
    {
      const string _tfsPath = "$/SomePlace";

      var tfs = TeamFoundationServerFactory.GetServer(tfsServerURL);
      var vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));  // Null means All  
      const VersionSpec versionFrom = null;

      var history = vcs.QueryHistory(_tfsPath,
                      VersionSpec.Latest,
                      0,
                      RecursionType.Full,
                      "",
                      versionFrom,
                      VersionSpec.Latest,
                      Int32.MaxValue,
                      true,
                      false);

      var GourceList = new List<ChangeItem>();
      var changesets = new List<Changeset>();
      foreach (var _item in history)
      {
        changesets.Add((Changeset)_item);
      }

      var o = new Comparison<Changeset>((p, y) => p.ChangesetId.CompareTo(y.ChangesetId));
      changesets.Sort(o);

      foreach (var changeset in changesets)
      {
        foreach (var change in changeset.Changes)
        {
          if (change.Item.ItemType == ItemType.Folder) continue;
          var item = new ChangeItem
          {
            username = changeset.Committer,
            type = ChangeItem.Convert(change.ChangeType),
            file = change.Item.ServerItem,
            timestamp = ConvertToTimestamp(change.Item.CheckinDate)
          };

          GourceList.Add(item);
        }

        Console.WriteLine("Adding changeset: " + changeset.ChangesetId);
      }

      return GourceList;
    }
  }
}

* This source code was highlighted with Source Code Highlighter.


P.S жаль что формат не распознался проектом Gource. Хотя делал по разному подбирая их custom format. ((
Неудобно, кто «мы» не рассказано, зачем тоже, но начинание неплохое в цлях маркетинга/QA )

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity