Thursday

flex/air open link in new window of system browser


<mx:LinkButton label="Click here " color="#0000FF" fontWeight="bold"
click='OpenUrl(event)' x="55" y="140" width="254" textDecoration="underline"/>


<fx:Script>
<![CDATA[
import flash.net.*;
import flash.system.*;

protected function OpenUrl(event:MouseEvent):void
{
navigateToURL( new URLRequest( "http://sourcefield.blogspot.com"));
}

Friday

calculate lrc

here is procedure how to claculate LRC for a string in c#

public static byte calculateLRC(byte[] ba, int offset, int length)
{
byte lrc = 0x0;
for (int i = offset; i < length; i++)
lrc ^= ba[i];
return lrc;
}

public static byte calculateLRC(string s, int offset, int length)
{
byte[] b = Encoding.ASCII.GetBytes(s);
byte l = calculateLRC(b, offset, length);
return l;
}
public static byte calculateLRC(string s)
{
byte l = calculateLRC(s, 0, s.Length);
return l;
}

binary serializer c

below is binary serializer class sample, could be used for serialization objects into strings (not XML , fixed length string) and back.
This class is good for creation network transport protocol layer classes.
here is sample of object to serialize
 
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using CSharp.Core;
using CSharp.Core.Utility;

namespace CCLib.CCEngine
{

namespace COMDATA
{

public class ControlCharacters
{

public const byte STX = 0x2;
public const byte EOT = 0x4;
public const byte NAK = 0x15;
public const byte ACK = 0x06;
public static Char StartOfText = Convert.ToChar(0x02);
public static Char FieldSeparator = Convert.ToChar(0x1C); //Convert.ToChar(28);
public static Char RecordSeparator = Convert.ToChar(0x1D);
public static Char EndOfText = Convert.ToChar(0x03);
public static Char MessageDelimiter = Convert.ToChar(".");
}

public class ControlBytes
{
public static byte StartOfText = 0x02;
public static byte EndOfText = 0x03;
}

/// <summary>
/// Class used for converting data-structures into byte
/// </summary>
public class BinFormatter
{

public static string RemoveContrChars(string s)
{
string rt = String.Empty;
if (!String.IsNullOrEmpty(s))
{
try
{
int si = s.IndexOf(ControlCharacters.StartOfText);
int se = s.IndexOf(ControlCharacters.EndOfText);

int spos = si + 1;
int epos = se - 1;

if (epos > spos) s = s.Substring(spos, epos - spos - 1);
rt = s.Replace(ControlCharacters.FieldSeparator, '|').Replace(ControlCharacters.RecordSeparator,'?');

//replace non printable characters with whitespace
rt = Regex.Replace(rt,"[\x01-\x1F]", "");

}
catch (Exception ex)
{
Logger.prn(ex);
}
}
return rt;
}

public static string Cut(string s)
{
int st = s.IndexOf(ControlCharacters.StartOfText);
int end = s.IndexOf(ControlCharacters.EndOfText);
return s.Substring(st + 1, end - st);
}


public static byte[] AddControlCharsAndLRC(string s)
{
return AddControlCharsAndLRC(Encoding.ASCII.GetBytes(s));
}

public static byte[] AddControlCharsAndLRC(byte[] s)
{
byte[] r = new byte[s.Length + 3];
r[0] = ControlBytes.StartOfText;
s.CopyTo(r, 1);

r[s.Length + 1] = ControlBytes.EndOfText;
r[s.Length + 2] = calculateLRC(r, 1, s.Length + 2);
return r;
}


public static object RawDeserializeStr(string s, Type anytype)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(s);
return RawDeserializeEx(data, anytype);
}

public static object RawDeserializeEx(byte[] rawdatas, Type anytype)
{
int rawsize = Marshal.SizeOf(anytype);
if (rawsize > rawdatas.Length)
return null;
GCHandle handle = GCHandle.Alloc(rawdatas, GCHandleType.Pinned);
IntPtr buffer = handle.AddrOfPinnedObject();
object retobj = Marshal.PtrToStructure(buffer, anytype);
handle.Free();
return retobj;

}

public static byte calculateLRC(byte[] ba, int offset, int length)
{
byte lrc = 0x0;
for (int i = offset; i < length; i++)
lrc ^= ba[i];
return lrc;
}

public static byte calculateLRC(string s, int offset, int length)
{
byte[] b = Encoding.ASCII.GetBytes(s);
byte l = calculateLRC(b, offset, length);
return l;
}
public static byte calculateLRC(string s)
{
byte l = calculateLRC(s, 0, s.Length);
return l;
}
public static byte[] RawSerializeEx(object anything)
{
int rawsize = Marshal.SizeOf(anything);
byte[] rawdatas = new byte[rawsize];
GCHandle handle = GCHandle.Alloc(rawdatas, GCHandleType.Pinned);
IntPtr buffer = handle.AddrOfPinnedObject();
Marshal.StructureToPtr(anything, buffer, false);
handle.Free();
return rawdatas;
}

public string StrFromByte(byte[] des2)
{
ASCIIEncoding utf82 = new ASCIIEncoding();
string uf82 = utf82.GetString(des2);
return uf82;
}

public static string RawSerializeStr(object anything)
{
byte[] des2 = RawSerializeEx(anything);
ASCIIEncoding utf82 = new ASCIIEncoding();
string uf82 = utf82.GetString(des2);
return uf82;
}

public static string sSet(string st, int plen)
{
if (st == "" || st.Length == plen)
{
return st;
}
else
{
char[] pro = Set(st, plen);
return new string(pro);
}
}

public static string CutTill(string st, int plen)
{
if (st.Length > plen)
{
return st.Substring(0, plen);
}
else
{
return st;
}
}


public static char[] Set(string st, int plen)
{
return Set(st, plen, ' ');
}

public static char[] Set(char st)
{
char[] pro = new char[1];
pro[0] = st;
return pro;
}

public static char[] Set(string st, int plen, char white_space)
{
int slen = st.Length;
char[] pro = new string(white_space, plen).ToCharArray();// new char[plen];
int count = slen > pro.Length ? pro.Length : slen;
st.CopyTo(0, pro, 0, count);
return pro;
}




public static string GetStringFromHex(string s)
{
string result = "";
string s2 = s.Replace(" ", "");
for (int i = 0; i < s2.Length; i += 2)
{
result += Convert.ToChar(int.Parse(s2.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));
}
return result;
}

public static string GetLRC(string s)
{
int checksum = 0;
foreach (char c in GetStringFromHex(s))
{
checksum ^= Convert.ToByte(c);
}
return checksum.ToString("X2");
}


}
}
}

binary serialize object c

here's sample of the object that could be serialized into string (binary not xml! ) and can be deserialized back.

it useful for creation protocols layer classes and here is example of
binary serializer
.
 
using System.Runtime.InteropServices;
using System.Text;
using CCLib.CCEngine.COMDATA;

namespace CCLib.CCEngine
{


namespace COMDATA
{
public class CApprovalCode
{
#region "Internal structures"

private SApprovalCode struc;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct SApprovalCode
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public char[] ApprovalCode;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public char[] RetrievalRefNumber;
}

public const int struc_size = 18;

#endregion

#region "Properties"

public string ApprovalCode
{
set { struc.ApprovalCode = BinFormatter.Set(value, 6); }
get { return new string(struc.ApprovalCode); }
}

public string RetrievalRefNumber
{
set { struc.RetrievalRefNumber = BinFormatter.Set(value, 12); }
get { return new string(struc.RetrievalRefNumber); }
}

#endregion

#region "Methods"

public CApprovalCode()
{
struc = new SApprovalCode();
struc.ApprovalCode = BinFormatter.Set("", 6);
struc.RetrievalRefNumber = BinFormatter.Set("", 12);
}

/// <summary>
/// Method for serializing structure into string
/// </summary>
public string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append(BinFormatter.RawSerializeStr(struc));

return sb.ToString();
}


/// <summary>
/// Method for de-serializing structure
/// </summary>
public void Parse(string s)
{
if (s != null && s != "")
{
struc = (SApprovalCode)BinFormatter.RawDeserializeStr(s.Substring(0, struc_size), struc.GetType());
}
}

#endregion
} //end CApprovalCode
}
}

convert object to string

 
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using CSharp.Core;
using CSharp.Core.Utility;

// serializing object into byte array
public static byte[] RawSerializeEx(object anything)
{
int rawsize = Marshal.SizeOf(anything);
byte[] rawdatas = new byte[rawsize];
GCHandle handle = GCHandle.Alloc(rawdatas, GCHandleType.Pinned);
IntPtr buffer = handle.AddrOfPinnedObject();
Marshal.StructureToPtr(anything, buffer, false);
handle.Free();
return rawdatas;
}


// serializing object into string
public static string RawSerializeStr(object anything)
{
byte[] des2 = RawSerializeEx(anything);
ASCIIEncoding utf82 = new ASCIIEncoding();
string uf82 = utf82.GetString(des2);
return uf82;
}

convert byte array to string c

 public string StrFromByte(byte[] des2)
{
ASCIIEncoding utf82 = new ASCIIEncoding();
string uf82 = utf82.GetString(des2);
return uf82;
}

convert string into array


byte[] s = Encoding.ASCII.GetBytes("convert this string into byte array");

the maximum array length quota 16384 has been exceeded while reading

this is client-side error, below is the correct way to call service:

        

[Test]
public void CC_Test_HTTPS()
{
//var svc = new Service();
//Console.WriteLine(svc.TransactionReport(args));


ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);
var endpointAddress = new EndpointAddress("https://dev/CreateAccount/Service.svc");

var wsHttpBinding = new WSHttpBinding(SecurityMode.Transport)
{
MaxReceivedMessageSize = 2147483647,
MaxBufferPoolSize = 2147483647,
ReaderQuotas =
{
MaxStringContentLength = 2147483647,
MaxArrayLength = 2147483647,
MaxBytesPerRead = 2147483647,
MaxDepth = 2147483647
}
};


var s = ChannelFactory<IService>.CreateChannel(wsHttpBinding, endpointAddress);
NewAccountResp newAccountResp = s.CreateAccount(CCTestRequest);

}

Monday

http://changethis.com/manifesto/show/80.03.MicropreneurManifesto

1. "Это трудно". Это в самом деле не просто и требует много размышлений, знаний, опыта, везения и усилий.
2. "Работайте одни". Тут я не хочу соглашаться. Мне реально хочется разделить с кем нибудь хотя-бы программирование. Т.к. на него постоянно не хватает времени. У меня последний месяц на программирование осталось 5% от всего фуллтаймого времени.
3. "Сфокусируйтесь на своих сильных качествах". Это я согласен. Особенно это касается выбора темы для программы. Конечно можно делать менеджеры закладок, но гораздо лучше применять свои знания в хорошо вам знакомых профессиональных областях. Плюсов много — например там меньше конкуренция, хотя зачастую там очень трудоемкие задачи. Я пришел к своей теме, после нескольких лет размышлений.

4. "Фриланс опасен". Мне очевидно, что свой продукт создавать выгоднее.
5. "Ищите рычаг. Сделайте один раз и продавайте всегда". Согласен.
6. "Не стреляйте в луну". Это да. Лучше синица в руках, чем журавль в небе. Хотя прямо сейчас, мой знакомый создает что-то масштабов Фэйсбука.
7. "Продукт в конце. Рынок в начале". Это безусловно надо начинать с исследования рынка. Именно поэтому моя первая программа была неуспешной.
8. "Берите деньги за свою программу". Согласен на все 100%. А ведь начинал с фривары.
9. "Любите сам процесс". Да. Я заметил что полюбил процесс гораздо больше, чем само программирование.
10."Работайте ради своей свободы". Согласен. Это меня очень сильно мотивировало.
11."Станьте "черным поясом" по интернет маркетингу". Ну в определенной мере понимать в нем надо.
12. "Автоматизируйте свою работу". Это безусловно. Не жалея денег.
13. "Чем больше вы публичны, тем быстрее оно пойдет" Это не обязательно. Хотя если Вы очередной Джоэл Спольски, то блог не помешает.
14. "Провал это тоже вариант". Лучше думать о хорошем.
15. "Живите скромно, тратьте деньги на бизнес". Жить скромно трудно. А тратить деньги на бизнес лично мне еще труднее.
16. "Отвергайте рост. Вместо работников ищите фрилансеров". Лично я до сих пор не могу определиться — то ли сотрудника взять, то ли фрилансеров нанять.
С сотрудником проще работать, но трудней его заменить.

imagemagic add text to image

rem different types of text annotations on existing images rem cyan yellow orange gold rem -gravity SouthWest rem draw text and anno...