C# Yellow Book

C# Yellow Book

В синхрон с предишния пост “Визуално програмиране на С#” в този пост Ви предлагам още една безплатна книга “C# Yellow Book”  този път на Английски език, автор е Rob Miles от Department of Computer Science в University of Hull, където книгата се предлага на студентите в първият курс по дисциплина програмиране.

Последното налично издание на книгата е версия 3.0  от  септември 2011, което можете да изтеглите в PDF от тук – Rob Miles C# Yellow Book 2011.pdf

Повече информация за книгата в интернет на адрес: http://www.robmiles.com/c-yellow-book/

Визуално програмиране на С#

Полезни ресурски по дисциплината “Визуално програмиране на C#”, можете да намерите на следните адреси в интернет:

Списък с курсови проекти по дисциплината “Визуално програмиране на C#” в рамките на учебната 2011-2012 за студентите от специалност “Информатика” задочна форма на обучение в Бургаски свободен университет, можете да изтеглите от тук: Kурсови проекти 2011-2012

Kлуб по състезателно програмиране

Стартира сайта на клуба по състезателно програмиране към Център по информатика и технически науки на Бургаският свободен университет. Всеки който се чувства съпричастен с тази инициатива може да се регистрира на този сайт: http://dev.bfu.bg

CompMath 2011

В периода 20 до 22 октомври 2011 г. в технически университет Габрово се състоя първата в Р.България студентска олимпиада по компютърна математика – „CompMath 2011“. В нея взеха участие студенти от пет висши училища: ТУ Габрово, ТУ Русе, ТУ Велико Търново и Бургаски Свободен Университет. БСУ бе представен от четири участващи студенти: Адрeане Димитрова, Стоян Узунов, Радостин Георгиев и Сашо Калъчев. Ръководител на участниците бе гл.ас. Димитър Минчев. Целта на олимпиадата е да се демонстрират уменията на студентите да решават математически задачи с помоща на компютър и програмни продукти за математика. Използвани бяха следните среди: Mapple, Mathematica и Matlab. Състезанието бе индивидуално като всеки участник получи тридесет математически задачи и четири часа време за решаването им. Студентът Адреане Димитрова от БСУ получи диплом за „Най-добре представил се участник на MATLAB“.

Mozilla’s 7

Страхотна новина, продуктите на Mozilla, браузър (Firefox) и четец на електронна поща (Thunderbird) преминаха към публична версия 7.
За повече информация, посетете официалните им страници в интернет съответно на адреси:

http://www.mozilla.org/en-US/firefox/new/
http://www.mozilla.org/en-US/thunderbird/

 

 

Правете пари докато сърфирате в Интернет

За да изкарвате пари от Интернет не е необходимо да имате собствен сайт, блог или форум, или пък да притежавате познания по програмиране. Начинът, който ще ви представя, е лесен и отнема само няколко минути на ден. Единствените неща, от които имате нужда, са компютър с Интернет, време и постоянство. По колко пари ще изкарвате зависи изцяло от вас. С течение на времето и с развиването на вашия онлайн бизнес.
За да започнете работа и да печелите пари трябва да се регистрирате в Neobux ,след това влезте в акаунта си и започнете да разглеждате рекламите.

Прочети повече на този адрес:
http://minchev.eu/neobux/

Регистрирай се от тук:
http://www.neobux.com/?r=dminchev

Полезни ресурси за програмиране на C/C++/C#

За любителите на програмирането на езика C/C++/C# са налични множество от полезни страници в интернет. Представям на вашето внимание интересни избрани линкове с ресурси по темата:

Moodle 2.0

Дългоочакваната версия на платформата за електронно обучение Moodle е вече факт. Както всеки запален по иновациите технологичен фен, реших да се запозная с новите възможности. С нескрито разочарование трябва да споделя, че все още е невъзможно възстановяване на курсове архивирани от 1.9 в 2.0. Тъй като задачата е сложна, дори когато тази функционалност е налична пак се очакват проблеми с нея. Препоръката на разработчиците е upgrade от 1.9 на 2.0 за да се запазят курсовете. След това може да се направи архив, да се преинсталира moodle 2.0 и тогава да се ипортират данните.

Пилотна версия на новата платформа за електронно обучение Moodle 2.0 съм инсталирал на временен Ubuntu 10.10 сърър на адрес:
http://82.147.150.156/moodle/

Подобренията наистина са много, можете да гледате видео лист за Moodle 2.0 от YouTube на адрес:
http://www.youtube.com/view_play_list?p=5F39867B1037BA89

SHA-1

Безплатна реализация на SHA-1 алгоритъм на C++.

За изтегляне на програмения фрагмент, посетете този адрес:
http://svn.openimageio.org/oiio/trunk/src/include/SHA1.h


/*
100% free public domain implementation of the SHA-1 algorithm
by Dominik Reichl
Web: http://www.dominik-reichl.de/

Version 1.8 - 2008-03-16
- Converted project files to Visual Studio 2008 format.
- Added Unicode support for HashFile utility method.
- Added support for hashing files using the HashFile method that are
larger than 2 GB.
- HashFile now returns an error code instead of copying an error
message into the output buffer.
- GetHash now returns an error code and validates the input parameter.
- Added ReportHashStl STL utility method.
- Added REPORT_HEX_SHORT reporting mode.
- Improved Linux compatibility of test program.

Version 1.7 - 2006-12-21
- Fixed buffer underrun warning that appeared when compiling with
Borland C Builder (thanks to Rex Bloom and Tim Gallagher for the
patch).
- Breaking change: ReportHash writes the final hash to the start
of the buffer, i.e. it's not appending it to the string anymore.
- Made some function parameters const.
- Added Visual Studio 2005 project files to demo project.

Version 1.6 - 2005-02-07 (thanks to Howard Kapustein for patches)
- You can set the endianness in your files, no need to modify the
header file of the CSHA1 class anymore.
- Aligned data support.
- Made support/compilation of the utility functions (ReportHash and
HashFile) optional (useful when bytes count, for example in embedded
environments).

Version 1.5 - 2005-01-01
- 64-bit compiler compatibility added.
- Made variable wiping optional (define SHA1_WIPE_VARIABLES).
- Removed unnecessary variable initializations.
- ROL32 improvement for the Microsoft compiler (using _rotl).

Version 1.4 - 2004-07-22
- CSHA1 now compiles fine with GCC 3.3 under MacOS X (thanks to Larry
Hastings).

Version 1.3 - 2003-08-17
- Fixed a small memory bug and made a buffer array a class member to
ensure correct working when using multiple CSHA1 class instances at
one time.

Version 1.2 - 2002-11-16
- Borlands C++ compiler seems to have problems with string addition
using sprintf. Fixed the bug which caused the digest report function
not to work properly. CSHA1 is now Borland compatible.

Version 1.1 - 2002-10-11
- Removed two unnecessary header file includes and changed BOOL to
bool. Fixed some minor bugs in the web page contents.

Version 1.0 - 2002-06-20
- First official release.

======== Test Vectors (from FIPS PUB 180-1) ========

SHA1("abc") =
A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D

SHA1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") =
84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1

SHA1(A million repetitions of "a") =
34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
*/

#ifndef ___SHA1_HDR___
#define ___SHA1_HDR___

#include "export.h"

#if !defined(SHA1_UTILITY_FUNCTIONS) && !defined(SHA1_NO_UTILITY_FUNCTIONS)
#define SHA1_UTILITY_FUNCTIONS
#endif

#if !defined(SHA1_STL_FUNCTIONS) && !defined(SHA1_NO_STL_FUNCTIONS)
#define SHA1_STL_FUNCTIONS
#if !defined(SHA1_UTILITY_FUNCTIONS)
#error STL functions require SHA1_UTILITY_FUNCTIONS.
#endif
#endif

#include

#ifdef SHA1_UTILITY_FUNCTIONS
#include
#include
#endif

#ifdef SHA1_STL_FUNCTIONS
#include
#endif

#ifdef _MSC_VER
#include
#endif

// You can define the endian mode in your files without modifying the SHA-1
// source files. Just #define SHA1_LITTLE_ENDIAN or #define SHA1_BIG_ENDIAN
// in your files, before including the SHA1.h header file. If you don't
// define anything, the class defaults to little endian.
#if !defined(SHA1_LITTLE_ENDIAN) && !defined(SHA1_BIG_ENDIAN)
#define SHA1_LITTLE_ENDIAN
#endif

// If you want variable wiping, #define SHA1_WIPE_VARIABLES, if not,
// #define SHA1_NO_WIPE_VARIABLES. If you don't define anything, it
// defaults to wiping.
#if !defined(SHA1_WIPE_VARIABLES) && !defined(SHA1_NO_WIPE_VARIABLES)
#define SHA1_WIPE_VARIABLES
#endif

#if defined(SHA1_HAS_TCHAR)
#include
#else
#ifdef _MSC_VER
#include
#else
#ifndef TCHAR
#define TCHAR char
#endif
#ifndef _T
#define _T(__x) (__x)
#define _tmain main
#define _tprintf printf
#define _getts gets
#define _tcslen strlen
#define _tfopen fopen
#define _tcscpy strcpy
#define _tcscat strcat
#define _sntprintf snprintf
#endif
#endif
#endif

// Fallback, if no 64-bit support
#ifndef _fseeki64
#define _fseeki64 fseek
#endif
#ifndef _ftelli64
#define _ftelli64 ftell
#endif

///////////////////////////////////////////////////////////////////////////
// Define variable types

#ifndef UINT_8
#ifdef _MSC_VER // Compiling with Microsoft compiler
#define UINT_8 unsigned __int8
#else // !_MSC_VER
#define UINT_8 unsigned char
#endif // _MSC_VER
#endif

#ifndef UINT_32
#ifdef _MSC_VER // Compiling with Microsoft compiler
#define UINT_32 unsigned __int32
#else // !_MSC_VER
#if (ULONG_MAX == 0xFFFFFFFF)
#define UINT_32 unsigned long
#else
#define UINT_32 unsigned int
#endif
#endif // _MSC_VER
#endif // UINT_32

#ifndef INT_64
#ifdef _MSC_VER // Compiling with Microsoft compiler
#define INT_64 __int64
#else // !_MSC_VER
#define INT_64 long long
#endif // _MSC_VER
#endif // INT_64

#ifndef UINT_64
#ifdef _MSC_VER // Compiling with Microsoft compiler
#define UINT_64 unsigned __int64
#else // !_MSC_VER
#define UINT_64 unsigned long long
#endif // _MSC_VER
#endif // UINT_64

///////////////////////////////////////////////////////////////////////////
// Declare SHA-1 workspace

typedef union
{
UINT_8 c[64];
UINT_32 l[16];
} SHA1_WORKSPACE_BLOCK;

class DLLPUBLIC CSHA1
{
public:
#ifdef SHA1_UTILITY_FUNCTIONS
// Different formats for ReportHash
enum REPORT_TYPE
{
REPORT_HEX = 0,
REPORT_DIGIT = 1,
REPORT_HEX_SHORT = 2
};
#endif

// Constructor and destructor
CSHA1();
~CSHA1();

UINT_32 m_state[5];
UINT_32 m_count[2];
UINT_32 m_reserved0[1]; // Memory alignment padding
UINT_8 m_buffer[64];
UINT_8 m_digest[20];
UINT_32 m_reserved1[3]; // Memory alignment padding

void Reset();

// Update the hash value
void Update(const UINT_8* pbData, UINT_32 uLen);

#ifdef SHA1_UTILITY_FUNCTIONS
// Hash in file contents
bool HashFile(const TCHAR* tszFileName);
#endif

// Finalize hash, call before using ReportHash(Stl)
void Final();

#ifdef SHA1_UTILITY_FUNCTIONS
bool ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType = REPORT_HEX) const;
#endif

#ifdef SHA1_STL_FUNCTIONS
bool ReportHashStl(std::basic_string& strOut, REPORT_TYPE rtReportType =
REPORT_HEX) const;
#endif

bool GetHash(UINT_8* pbDest) const;

private:
// Private SHA-1 transformation
void Transform(UINT_32* pState, const UINT_8* pBuffer);

// Member variables
UINT_8 m_workspace[64];
SHA1_WORKSPACE_BLOCK* m_block; // SHA1 pointer to the byte array above
};

#endif // ___SHA1_HDR___

Linux Socket Programming – Echo client/server

Демонстрация на програмиране на сокети под Linux. В конкретния случай са реализирани програмните фрагменти на клиент и сървър:

server.c

#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<error.h>
#include<strings.h>
#include<unistd.h>
#include<arpa/inet.h>
#define MAX_CLIENTS 20
#define BUFFER 1024
main(int argc, char **argv)
{
struct sockaddr_in server, client;
int sock, connection, data_len, struct_len = sizeof(struct sockaddr_in);
char data[BUFFER];
if((sock = socket(AF_INET, SOCK_STREAM,0)) == -1)
{
perror("Socket error.");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[1]));
server.sin_addr.s_addr = INADDR_ANY;
bzero(&server.sin_zero,8);
if((bind(sock,(struct sockaddr *)&server,struct_len)) == -1)
{
perror("Bind error.");
exit(-1);
}
if((listen(sock,MAX_CLIENTS)) == -1)
{
perror("Listen error.");
exit(-1);
}
while(1)
{
pid_t pid = fork();
if((connection = accept(sock,(struct sockaddr *)&client,&struct_len)) == -1)
{
perror("Accept error.");
exit(-1);
}
data_len = 1;
while(data_len)
{
data_len = recv(connection, data, BUFFER, 0);
if(data_len)
{
send(connection, data, data_len, 0);
data[data_len] = '\0';
printf("%s",data);
}
}
close(connection);
}
close(sock);
}

client.c

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<strings.h>
#include<arpa/inet.h>
#define ERROR -1
#define BUFFER 1024
main(int argc, char **argv)
{
struct sockaddr_in server;
int sock, len;
char input[BUFFER], output[BUFFER],data[BUFFER];
char *whoami=getlogin();
if((sock = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
{
perror("Socket error.");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[2]));
server.sin_addr.s_addr = inet_addr(argv[1]);
bzero(&server.sin_zero, 8);
if((connect(sock,(struct sockaddr *)&server,
sizeof(struct sockaddr_in))) == ERROR)
{
perror("Connect error.");
exit(-1);
}
while(1)
{
fgets(input, BUFFER, stdin);
strcpy(data, whoami);
strcat(data, ": ");
strcat(data, input);
send(sock, data, strlen(data), 0);
len = recv(sock, output, BUFFER, 0);
output[len] = '\0';
printf("Echo: %s",output);
}
close(sock);
}

Go back to top