Google ImageGrabber
Programmin Info/개발 / 2012/01/25 00:21
구글 이미지 검색의 결과 이미지들을 수집해주는 프로그램.
소스코드는 정리 후 공개
[0.1.0.1]
- 최초 publish 버전
- 대상 프레임워크를 .NET Framework 3.5 Client Profile 로 변경
- 변경된 구글 이미지 검색결과 소스코드 적용
- ProgressBar, Icon 적용
|
std::vector[int] v;
v.push_back(1);
std::vector[int]::const_iterator iteNow = v.begin(), iteEnd = v.end();
for ( ; iteNow != iteEnd ; )
{
if ( (*iteNow) == 1 )
{
iteNow = v.erase(iteNow);
}
else
{
iteNow++;
}
}
std::vector[int] v;
v.push_back(1);
std::vector[int]::const_iterator iteNow = v.begin();
while ( iteNow != v.end() )
{
if ( (*iteNow) == 1 )
{
iteNow = v.erase(iteNow);
}
else
{
iteNow++;
}
}
Buffer FixedSizeReceive(TcpSocket client, int size)
{
int received = 0;
unsigned char* buffer = new unsigned char[size];
while ( received < size )
{
Buffer packet = client.Receive(size - received);
memcpy(buffer + received, packet.GetBuffer(), packet.GetSize());
received += packet.GetSize();
}
Buffer result(buffer, size);
delete [] buffer;
return result;
}
위의 코드를
Buffer FixedSizeReceive(TcpSocket client, int size)
{
int received = 0;
unsigned char* buffer = new unsigned char[size];
while ( received < size )
{
Buffer packet = client.Receive(size - received);
// 접속이 끊겼다면, 빈 버퍼를 반환한다.
if ( packet.GetSize() == 0 )
{
delete [] buffer;
return Buffer(0);
}
memcpy(buffer + received, packet.GetBuffer(), packet.GetSize());
received += packet.GetSize();
}
Buffer result(buffer, size);
delete [] buffer;
return result;
}
로 수정
| type time_t; | 1970년 1월 1일 이후 지나간 초 |
| struct tm; | 년,월,일,요일,시간 정보 |
| time_t time(time_t* timer); | 시스템 타임 반환 |
| tm* gmtime(time_t const* timer); | time_t -> tm 변환 |
| tm* localtime(time_t const* timer); | time_t -> Local 기준 tm 변환 |
| time_t _mkgmtime(tm* time) | UTC 기준 tm -> time_t로 변환 |
| time_t mktime(tm* time) | Local 기준 tm -> time_t로 변환 |
| char* asctime(tm const* ptr) | tm -> 문자열 변환 |
| char* ctime(time_t const* timer) | time_t -> 문자열 변환 |
| char* _strdate(char* dest); | 시스템 날짜를 문자열로 반환 |
| char* _strtime(char* dest); | 시스템 시간을 문자열로 반환 |
| size_t strftime(char* dest, size_t max, char const* format, tm const* time); | 시간을 형식 문자열로 변환 |
| struct _timeb; | UTC시간(with ms), UTC<->Local 간 시간 차, SummerTime 정보 |
| void _ftime(_timeb const* timer); | _timeb 반환 |
| void _tzset(); | _ftime, localtime 함수에서 사용되는 시간 환경변수 설정 |
더보기
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace CS
{
public class Person
{
// Attribute의 이름을 지정
[XmlAttribute("Name")] public string Name;
[XmlAttribute("Age")] public int Age;
[XmlAttribute("Address")] public string Address;
// Xml에 포함시키지 않을 필드 지정
[XmlIgnore] public int CreditCardNumber;
}
[XmlRoot("PersonList")] // XmlRoot 이름 지정
public class PersonList
{
// Element 이름 지정. Generic이 아닌, Array 타입으로 반환하는 Property나 Field여야 한다.
[XmlElement("Person")]
public Person[] Persons
{
get { return mPersonList.ToArray(); }
set { mPersonList = new List<Person>(value); }
}
public void Add(Person p)
{
mPersonList.Add(p);
}
public static void Save(PersonList list)
{
using (var writer = new StreamWriter("Persons.xml"))
{
var serializer = new XmlSerializer(typeof(PersonList));
serializer.Serialize(writer, list);
}
}
public static PersonList Load()
{
using (var reader = new StreamReader("Persons.xml"))
{
var serializer = new XmlSerializer(typeof(PersonList));
return serializer.Deserialize(reader) as PersonList;
}
}
[XmlIgnore]
private List<Person> mPersonList = new List<Person>();
}
class Program
{
static void Main(string[] args)
{
// PersonList 생성
var list = new PersonList();
// Person 추가
list.Add(new Person()
{
Name = "이근영",
Age = 27,
Address = "Dalaran",
CreditCardNumber = 12345
});
// 저장
PersonList.Save(list);
// 읽기
var loadedList = PersonList.Load();
}
}
}
public class Base : IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// Dispose가 반복 호출되는지 확인한다.
if ( disposed )
{
return;
}
disposed = true;
if (disposing)
{
// Managed Object 제거
}
// Unmanaged Object 제거
// Field에 null 대입.
}
~Base()
{
Dispose(false);
}
private bool disposed = false;
}
public class Derived : Base
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
// Managed Object 제거
}
// Unmanaged Object 제거
// Field에 null 대입.
base.Dispose(disposing); // 부모 클래스의 Dispose 호출
}
// 상속 클래스는 소멸자나 IDisposable.Dispose()를 구현하지 않는다.
}
Process 이름과 경로를 입력받아, Process가 종료되면 재시작 시켜주는 프로그램.
개발언어: C# (Visual Studio 2008), .NET Framework 2.0 필요.
private static string strConvert(string source, string target, string str)
{
Encoding eSource = Encoding.GetEncoding(source);
Encoding eTarget = Encoding.GetEncoding(target);
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms, eSource);
StreamReader sr = new StreamReader(ms, eTarget);
sw.Write(str);
sw.Flush();
sr.BaseStream.Position = 0;
string ret = sr.ReadToEnd();
sr.Close();
sw.Close();
ms.Close();
return ret;
}
using System.Net;
using System.Linq;
using System.Net.NetworkInformation;
namespace Utility
{
public static class IpAddress
{
static bool IsMyIpAddress(string address)
{
var find = from item in NetworkInterface.GetAllNetworkInterfaces()
from unicastAddress in item.GetIPProperties().UnicastAddresses
where unicastAddress.Address.ToString() == address
select unicastAddress;
return (0 < find.Count());
}
static string GetNetworkAdapterName(string address)
{
var find = (from item in NetworkInterface.GetAllNetworkInterfaces()
from unicastAddress in item.GetIPProperties().UnicastAddresses
where unicastAddress.Address.ToString() == address
select item.Name).Take(1);
return (find.Count() == 0) ? string.Empty : find.ElementAt(0);
}
}
}