Полезные ссылки

Февраль 1st, 2012 § 0 comments § Прямая ссылка

Написание своего игрового движка

http://habrahabr.ru/blogs/gdev/102930/

http://habrahabr.ru/blogs/gdev/103561/

http://habrahabr.ru/blogs/gdev/107716/

 

Проблемы с запуском jar

Январь 21st, 2012 § 0 comments § Прямая ссылка

Захотел как -то я написать свой HelloWorld на Java, но не тут-то было. Вроде все скачал и jdk и Eclipse написал свои первые


package xom.test.www;
public class Main {
public static void main(String[] args)
{
System.out.println("EHLO world!!!");

}
}

В среде все выполнилось, я получил свою заветную надпись. Подумал хорошо бы это сделать вне Eclipse, сделал я экспорт получил jar, но двойной клик так и ничего не дал, не увидел я консоль с надписью. После долгого гугления и получения надписей вроде


Error: Could not find or load main class

Выяснилось где же собака зарыта. Первое что может быть посмотрите с какой программой ассоцируется jar файл в


HKEY_CLASS_ROOT/jarfile/open/command/

должно быть следующее


"C:\jre\bin\javaw.exe" -jar "%1" %*

путь к jre/jdk у вас свой. Если здесь все ок, тогда причиной того что вы не видите результат является то что прога ваша консольная, а отличие javaw от java в том что javaw не имеет своего консольного окна, поэтому мы и не видим результат. Если же очень хочется, то в консоле можно набрать


java -jar test.jar

и тогда мы увидим исполнение нашей консольной программы. Что бы проверить работает ли javaw нужно создать оконное приложение вот простейший код, при двойном щелчке на jar вы увидите окно


package com.test.www;

import java.awt.*;
import java.awt.event.*;

public class Main extends Frame{
public Main(){
super("ApplicationWindow");
setSize(200, 200);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
setVisible(false); dispose();
System.exit(0);
}
});
}

public static void main(String[] args){
Main aw = new Main();
aw.setVisible(true);
}
}

Вот такие пироги, все как всегда просто, но до этой простоты нужно еще дойти, у меня это заняло половину дня и весь вечер.

Четыре способа очистить StringBuilder

Январь 20th, 2012 § 0 comments § Прямая ссылка

Привожу четыре способа очистить StringBuilder.
Первый самый очевидный:

StringBuilder temp = new StringBuilder("SomeText");
//some code
temp = new StringBuilder();

Второй способ:

StringBuilder temp = new StringBuilder("SomeText");
//some code
temp.Remove(0,temp.Length);

Continue reading “Четыре способа очистить StringBuilder” »

C# чтение XML с помощью XmlDocument

Январь 20th, 2012 § 0 comments § Прямая ссылка

В .NET есть целое пространство имен для работы с XML, но среди всего этого изобилия мне было трудно найти простое решение. Конечно, оно существовало, но среди всех этих классов, сразу не разберешься. Тут я представлю несколько способов для работы с XML в C#, для каждой конкретной задачи подходит именно свой, какой решите сами.

Для экспериментов возьмем готовый xml файл, так будет наглядней

<?xml version="1.0" encoding="UTF-8"?>
<GetPriceResearchResponse>
<Ack>Success</Ack>
<ProcessingTime>5.645</ProcessingTime>
<Timestamp>2012-01-20T09:06:26.000Z</Timestamp>
<Version>2</Version>
<CallsRemaining>593</CallsRemaining>
<CallLimitResetTime>2012-02-18T04:31:08Z</CallLimitResetTime>
<Statistics>
<TotalSales currency=dollars>198565.18</TotalSales>
<TotalSoldItems>2889</TotalSoldItems>
<AverageSoldPrice>68.73</AverageSoldPrice>
<MaxSoldPrice>3052.00</MaxSoldPrice>
<MinSoldPrice>0.01</MinSoldPrice>
</Statistics>
</GetPriceResearchResponse>

Continue reading “C# чтение XML с помощью XmlDocument” »

Подсчет строк кода в проекте

Январь 17th, 2012 § 0 comments § Прямая ссылка

Вот простой способ для того как подсчитать количество строк кода в проекте используя PowerShell. Заходим cmd->PowerShell перемещаемся в нужную нам директорию и вводим


(dir -include *.cs,*.xaml -recurse | select-string .).Count

в примере подсчитывает файлы *.cs и *.xaml для своего проекта введите свои расширения.

C# работа с реестром

Декабрь 20th, 2011 § 0 comments § Прямая ссылка

Недавно работал с реестром, решил поделиться опытом. В общем, ничего сложного, как и всегда. Здесь опишу основные действия, какие можно выполнять с реестром. Это писать в реестр и читать из него. Для этого импортируйте пространство имен Microsoft.Win32.

Чтение из реестра


using Microsoft.Win32;

RegistryKey readKey = Registry.ClassesRoot.CreateSubKey(".386");
object check = readKey.GetValue("");
readKey.Close();

Этим кодом я прочитал значение по умолчанию в ветке HKEY_CLASSES_ROOT\.386 что бы прочитать другое значение в функции GetValue используем название  поля, которое мы хотим получить. Если такого значения нет то возвращается null

Записб в реестр


RegistryKey saveKey = Registry.ClassesRoot.CreateSubKey(".386");
saveKey.SetValue("", "anothervxdfile");
saveKey.Close();

Этим кодом я задал параметру по умолчанию новое значение, что бы задать параметр с другим значением SetValue(“anotherParam”,”value”). Что хочется заметить первое это то что операции с реестром довольно опасны и при незнании того что делаешь можно благополучно уничтожить систему. Второе это операции, требующие особых привилегий, особенно это касается тех, у кого Vista, Seven и т.д, если вы не Администратор UAC не даст вам что-либо записать или считать. Так что позаботьтесь о том, что бы ваша программа запрашивала права на операции с реестром. Об это я сделаю нотис как это сделать без лишних заморочек с помощью добавления файла манифеста в ПО.

Проблемы с Panel autoscroll WinForms

Декабрь 15th, 2011 § 0 comments § Прямая ссылка

Когда использовал Panel в связке с PictureBox в C# периодически пропадал скролинг, я грешил на Студию. Оказывается нет проблема в особенности Panel так вот если выставить Anchor’ы по всем четырем сторонами то скролинг пропадает. Что бы этого избежать выставляйте Anchor’ы сверху и слева и будем вам счастье. Ссылка на msdn.

Генерация md5 C#

Декабрь 13th, 2011 § 0 comments § Прямая ссылка

Думаю может кому либо пригодится это простая функция для генерации такого сверх популярного хеша. Первая функция для генерации хеша от рандомного числа. Вторая от какого либо текста. Во общем-то по аналогии можно сделать для любых данных главное переводить их в бинарный формат.

using System.Security.Cryptography;

public string GetMD5()
{
Random randNum = new Random();
MD5CryptoServiceProvider md5hash = new MD5CryptoServiceProvider();
byte[] genByte = Encoding.UTF8.GetBytes(randNum.NextDouble().ToString());
byte[] computeHash = md5hash.ComputeHash(genByte);
string result = String.Empty;
foreach (byte currentByte in computeHash)
result += currentByte.ToString("x2");
return result;
}

public string GenMD5(string text)
{
MD5CryptoServiceProvider md5Hash = new MD5CryptoServiceProvider();
byte[] textByte = Encoding.UTF8.GetBytes(text);
byte[] computeHash = md5Hash.ComputeHash(textByte);
string result = String.Empty;
foreach (byte currentByte in computeHash)
result += currentByte.ToString("x2");
return result;
}

Класс для работы с .NET MySQL

Декабрь 8th, 2011 § 2 comments § Прямая ссылка

Решил написать свой класс для работы с MySQL нахожу эту штуку очень полезной т.к. если нужно быстро начать работу с базой данных, то думаю это то что нужно. Можете скачать весь проект и попробовать его в деле. Позже планирую выложить на какой нибудь VCS типа github или bitbucket так что следите за обновлениями поста. Ниже привожу код.

Continue reading “Класс для работы с .NET MySQL” »

Соглашение об именовании в C# (C# code convention)

Декабрь 8th, 2011 § 0 comments § Прямая ссылка

Начал гуглить на эту тему, т.к. надоело уже писать код не стандартизованный. Захотел придерживаться общепринятых правил. Нашел список в одном из учебников привожу его здесь. Для не знавших или забывших. Camel case это когда первая буква строчная остальные прописные пример: someVariable, anotherSomeVarible, someFunction. Pascal Case это когда все буквы прописные пример: SomeVariable, AnotherSomeVarible, SomeFunction.

Type Case Notes
Class / Struct Pascal Casing
Interface Pascal Casing Starts with I
Enum values Pascal Casing
Enum type Pascal Casing
Events Pascal Casing
Exception class Pascal Casing End with Exception
public Fields Pascal Casing
Methods Pascal Casing
Namespace Pascal Casing
Property Pascal Casing
Protected/private Fields Camel Casing
Parameters Camel Casing
Смотреть фильмы онлайн