Author: Svetlin Nakov
November 29, 2011
За феновете на приложното програмиране е обявено първото по рода си национално състезание по практическа разработка на софтуер за студенти “WEBLOZ Students’12”.
Категории – уеб, мобайл и десктоп
Участницит в състезанието WEBLOZ за студенти могат да мерят сили в три категории:
- Уеб приложения
- Мобилни приложения
- Настолни приложения
За всяка категория има отделно жури и отделни критерии за оценяване. Състезанието е отборно и могат да участват екипи от до 5 души (студенти-бакалаври от всички български университети).
Кръговете са два – задочен и присъствен
Състезанието WEBLOZ за студенти ще се проведе в два кръга: виртуален и присъствен. Във виртуалния кръг може да участват отбори до 5 души. Най-добрите 30 проекта от всяка категория достигат до втория (финален) кръг, който е присъствен и се провежда в София в периода 25-26 февруари.
Ще има и награди (естествено)
Предвиден е награден фонд от над 3 000 лв.
Наков и този път в журито
Журито във всяка категория се състои от 5 души. И този път тази работа няма да се мине без мен. Бях поканен за жури в категория “настолни (desktop) приложения”. Надявам се да е силна конкуренцията и да има добри проекти, макар и десктоп приложенията да не са твърде на мода.
Срокове и дати
- Регистрация на проектите – до 9.01.2012 г.
- Класиране на първи кръг – 23.01.2012 г.
- Втори кръг (финал) – 25-26.02.2012 г.
WEBLOZ Students – още информация
Ако състезанието “WEBLOZ Students” ви е хванало интереса, прочетете още за него на неговия сайт: http://webloz.net/students/.
Tags: WEBLOZ, WEBLOZ Students, мобилни приложения, настолни приложения, състезание, състезание по разработка на софтуер, състезания по програмиране, уеб приложения
Author: Svetlin Nakov
November 24, 2011
На 21 ноември започнаха обученията в безплатния SEO курс в Академията на Телерик. Към днешна дата в SEO курса са записани около 580 участници, от които повече от половината ще се обучават по SEO онлайн, а останалите – присъствено, в учебна зала “Ентерпрайс” в Академията на Телерик за софтуерни инженери:

Голямата учебна зала на Телерик (на снимката) е с капацитет 250 седящи места и на откриването на SEO курса беше напълнена на 90%. Интересът към курса е огромен и съм изключително щастлив, че успяхме да приемем за безплатно обучение по SEO всички.
Откриване на SEO курса
На откриването на безплатния SEO курс ръководителят на Академията на Телерик за софтуерни инженери Светлин Наков представи курса, учебния материал, лекторите, SEO проектите и направи бърз преглед на SEO технологиите и основните принципи и концепции на SEO оптиизацията.

Бяха разгледани накратко основните стъпки при реализация на SEO проекти. В началото беше обяснено какво е SEO, как работят търсачките и какви са основните стъпки при типчните SEO проекти. След това беше обяснено как да си поставим цели при стартиране на SEO проект, как да измерваме напредъка (SEO метрики), как да направим сайт, който е вътрешно оптимизиран за търсачките (SEO-friendly web site), какво е копирайтинг и как се пишат качествени SEO статии, какво е линк билдинг и какви са основните техники за построяване на обратни върки към вашия сайт (backlinks) и какво е социално SEO и как да използване социалните мрежи за маркетиране на нашите сайтове и привличане на повече посещения. Беше обърнато внимание на управление на онлайн репутацията (ORM), бяха разгледани и демонстрирани популярни SEO инструменти, как да ползваме Google Webmaster Tools и Google Analytics, как да проверим обратните връзки към нашия сайт (backlinks), как да мерим PageRank и други. След това бяха обсъдени локалните търсещи машини и как да индексираме нашите сайтове в тях, бяха демонстрирани и специални канали за търсене (мобилно търсене, специализирано търсене, търсене на видео, снимки и други). Беше обяснена концепцията на Google Panda и промените в най-ползваната търсачка на света, които тази нова версия на Google носи със себе си. Накрая бяха обяснени платените програми за привличане на трафик към сайта ви (AdWords и adCenter), какво е бяло и черно SEO (white and black SEO) и концепцията за вирусно SEO (link bait).
Още за SEO курса – уроци, лекции, видео
Очаквайте следващите SEO лекции всеки понеделник. На тях ще бъдат разгледани в повече дълбочина технологията на SEO, копирайтинга, линк билдинга и други SEO техники и инструменти. Можете да намерите всички SEO лекции, уроци и видео на сайта на SEO курса: http://seocourse.telerik.com.
Tags: SEO инструменти, SEO оптимизация, SEO-friendly сайт, академия за софтуерни инженери, Академия на Телерик, безплатен SEO курс, безплатен курс, копирайтинг, курс, линк билдинг, оптимизация за търсачки, СЕО, социално SEO, управление на онлайн репутацията
Author: Svetlin Nakov
November 23, 2011
Recently I was again asked how do we perform “cin >> a >> b” in C# or how we can enter a sequence of numbers from the console in C#. In C++ we have very powerful class called “cin” (more correctly std::cin located in the standard library “iosteam”) that overloads the >> operator and allows entering anything from the standard input (stdin): numbers, characters, strings and other data types.
I searched for “cin in C#” and found nothing similar to “std::cin” for C#, so I needed to write such a class.
The Nakov.IO.Cin Class – “cin” Functionality for C# / .NET
Initially I had an idea to implement my C# “cin” class exactly like in C++. Unfortunately this was impossible because the C# language has certain limitations:
- You cannot override the >> operator in C# for any type except int
- You cannot override the >> operator in C# for output / by-ref types (e.g. out int, ref int)
- You cannot add extension methods to the Console class because it is static (so additions like Console.Cin, Console.NextInt(), Console.In << x << b and Console.Cin.NextInt() cannot be added to it)
Finally I decided to implement my C# console simplifies reader it in a way similar to the Java syntax used in the java.util.Scanner class. See the code below:
namespace Nakov.IO
{
using System;
using System.Text;
using System.Globalization;
/// <summary>
/// Console input helper for C# and .NET. Allows simplified reading of numbers and string
/// tokens from the console in a way similar to "cin" in C++ and java.util.Scanner in Java.
/// </summary>
///
/// <copyright>
/// (c) Svetlin Nakov, 2011 - http://www.nakov.com
/// </copyright>
///
/// <example>
/// // In C++ we will use "cin >> x >> y;"
/// // Using Nakov.IO.Cin we can do the same as follows:
/// int x = Cin.NextInt();
/// double y = Cin.NextDouble();
/// </example>
///
public static class Cin
{
/// <summary>
/// Reads a string token from the console
/// skipping any leading and trailing whitespace.
/// </summary>
public static string NextToken()
{
StringBuilder tokenChars = new StringBuilder();
bool tokenFinished = false;
bool skipWhiteSpaceMode = true;
while (!tokenFinished)
{
int nextChar = Console.Read();
if (nextChar == -1)
{
// End of stream reached
tokenFinished = true;
}
else
{
char ch = (char)nextChar;
if (char.IsWhiteSpace(ch))
{
// Whitespace reached (' ', '\r', '\n', '\t') -->
// skip it if it is a leading whitespace
// or stop reading anymore if it is trailing
if (!skipWhiteSpaceMode)
{
tokenFinished = true;
if (ch == '\r' && (Environment.NewLine == "\r\n"))
{
// Reached '\r' in Windows --> skip the next '\n'
Console.Read();
}
}
}
else
{
// Character reached --> append it to the output
skipWhiteSpaceMode = false;
tokenChars.Append(ch);
}
}
}
string token = tokenChars.ToString();
return token;
}
/// <summary>
/// Reads an integer number from the console
/// skipping any leading and trailing whitespace.
/// </summary>
public static int NextInt()
{
string token = Cin.NextToken();
return int.Parse(token);
}
/// <summary>
/// Reads a floating-point number from the console
/// skipping any leading and trailing whitespace.
/// </summary>
/// <param name="acceptAnyDecimalSeparator">
/// Specifies whether to accept any decimal separator
/// ("." and ",") or the system's default separator only.
/// </param>
public static double NextDouble(bool acceptAnyDecimalSeparator = true)
{
string token = Cin.NextToken();
if (acceptAnyDecimalSeparator)
{
token = token.Replace(',', '.');
double result = double.Parse(token, CultureInfo.InvariantCulture);
return result;
}
else
{
double result = double.Parse(token);
return result;
}
}
/// <summary>
/// Reads a decimal number from the console
/// skipping any leading and trailing whitespace.
/// </summary>
/// <param name="acceptAnyDecimalSeparator">
/// Specifies whether to accept any decimal separator
/// ("." and ",") or the system's default separator only.
/// </param>
public static decimal NextDecimal(bool acceptAnyDecimalSeparator = true)
{
string token = Cin.NextToken();
if (acceptAnyDecimalSeparator)
{
token = token.Replace(',', '.');
decimal result = decimal.Parse(token, CultureInfo.InvariantCulture);
return result;
}
else
{
decimal result = decimal.Parse(token);
return result;
}
}
}
}
How Cin.NextDouble() Works?
My class Nakov.IO.Cin allows simplified entering string tokens, integer numbers, floating-point numbers and decimal numbers in C# from the standard input (the console). When reading a sequence of numbers, we can separate them with a single space, multiple spaces, new line separators or any other sequence of whitespace characters: spaces, tabs, new lines (\n, \r\n), etc.
In addition Nakov.IO.Cin solves the culture-specific problem with the decimal point separator which may be “,” in some countries (like Bulgaria) and “.” in other countries (like USA and Canada). The Cin.NextDouble() and Cin.NextDecimal() methods accept a Boolean parameter which specifies whether the numbers should be parsed using the default decimal separator (specified in the regional settings in Windows) or by accepting both separators: “.” and “,”. By default both decimal separators are accepted when entering numbers by Nakov.IO.Cin.NextDouble() and Nakov.IO.Cin.NextDecimal().
Using the Nakov.IO.Cin Class – Example
In the below example I show how to use the class “Nakov.IO.Cin” to enter integer numbers, floating-point numbers, decimal numbers and string tokens:
using System;
using Nakov.IO; // see http://www.nakov.com/tags/cin
public class CinExample
{
static void Main()
{
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.Write("Enter two integers x and y separated by whitespace: ");
// cin >> x >> y;
int x = Cin.NextInt();
double y = Cin.NextDouble();
Console.Write("Enter your age: ");
int age = int.Parse(Console.ReadLine());
Console.WriteLine("Name: {0}, Age: {1}", name, age);
Console.WriteLine("x={0}, y={1}", x, y);
Console.Write("Enter a positive integer number N: ");
int n = Cin.NextInt();
Console.Write("Enter N decimal numbers separated by a space: ");
decimal[] numbers = new decimal[n];
for (int i = 0; i < n; i++)
{
numbers[i] = Cin.NextDecimal();
}
Console.Write("The numbers in ascending order: ");
Array.Sort(numbers);
for (int i = 0; i < n; i++)
{
Console.Write(numbers[i]);
Console.Write(' ');
}
Console.WriteLine();
Console.WriteLine("Enter two strings seperated by a space: ");
string firstStr = Cin.NextToken();
string secondStr = Cin.NextToken();
Console.WriteLine("First str={0}", firstStr);
Console.WriteLine("Second str={0}", secondStr);
}
}
Translating from C++ “cin” to C# Using the C# “cin” Class
Once you have included the class Nakov.IO.Cin to your C# / VB.NET project, you could translate the following C++ program into C#:
Sample C++ code entering a number N and a sequence of N integer numbers, separated by a space (or any other sequence of whitespace characters):
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int* numbers = new int[n];
for (int i = 0; i < n; i++)
{
cin >> numbers[i];
}
for (int i = 0; i < n; i++)
{
cout << numbers[i] << ' ';
}
}
The same code written in C# using the C# “cin” class (Nakov.IO.Cin) is as follows:
using System;
using Nakov.IO; // see http://www.nakov.com/tags/cin
public class EnteringNumbers
{
static void Main()
{
int n;
n = Cin.NextInt();
int[] numbers = new int[n];
for (int i = 0; i < n; i++)
{
numbers[i] = Cin.NextInt();
}
for (int i = 0; i < n; i++)
{
Console.Write(numbers[i] + " ");
}
}
}
With both the programs (the C++ and the C# one) you are free to enter all the requested numbers on a single line (e.g. “3 1 –2 3”) or on separate lines (e.g. “\r\n 3 \r\n 1 \t –2 \r\n\r\n 3”)) and they will be parsed correctly, as expected.
Download the Nakov.IO.Cin Class
Tags: C#, C# cin, C# cin class, C# console, C# console cin, C++ cin for C#, cin, cin >> a >> b in C#, cin >> a in C#, cin class C#, cin for .NET, cin for C#, Console.NextDouble(), Console.NextInt(), Console.NextInt() in C#, Console.NextToken(), CSharp, java.util.Scanner, java.util.Scanner in C#, Nakov.IO.Cin, std::cin, std::cin C#, stdin
Author: Svetlin Nakov
За всички, които се интересуват от роботика, електроника, програмиране и обучение по информационни технологии, отправяме покана да посети безплатно финалите на най-голямото за България състезание по роботика “FIRST LEGO League”.
Кога и къде?
Събитието ще се проведе на 26 ноември 2011 г. от 9:00 часа в Интер Експо Център, гр. София. Вход: свободен, без предварителна регистрация.
За състезанието FIRST LEGO League
FIRST Lego League (FLL) е най-голямото международно състезание по роботика за ученици. Организира се с участието на десетки хиляди ученици от целия свят, състезаващи се на локално, а при успех и на международно ниво. Провежда се всяка година като задачите са свързани с важни за света проблеми. В рамките на няколко месеца под напътствията на ръководител ученици на възраст между 10 и 16 години се подготвят в отбор, за участие в състезанието. Подготовката включва конструиране и програмиране на реални роботи LEGO Mindstorms NTX.
Как се програмират роботчетата?
Програмирането на роботчетата “LEGO Mindstorms” се извършва на специален графичен език за програмиране “Mindstorms NXT-G”, който съчетава стандартни програмни примитиви (променливи, конструкции за управление, цикли, паралелност и други) с API за вход от сензорите на робота (разпознаване на цветове, разстояние, звукови сигнали и други) и управление на изходната периферия (звук, светлини и други).
За българското издание на състезанието по роботика

През тази година от България ще участват на 80 ученици, водени от 19 ментора. В деня на събитието над 20 съдии, членове на журито и асистенти ще помагат за правилното му провеждане. Два от отборите се подготвят под менторството на специалисти от Телерик. В последните 3 месеца те имаха възможност да се подготвят. На 26 ноември предстои да премерят сили в директен сблъсък, на живо в София.
Програма на състезанието
- 09:00 – Откриване
- 09:30 – 12:00 – Състезание в дисциплините, представяне на проект, отборна игра, техническо интервю
- 12:00 – 13:00 – Обяд
- 13:00 – 15:00 – Състезание в дисциплината “Игра с робота”
- 15:00 – 16:00 – Финали
- 16:00 – 17:00 – Награждаване и закриване
Организаторите
FLL в България се организира от „ИКТ Училище“ и Училище по роботика „Robopartans“ с изключителната подкрепа на SAP AG и SAP Labs Bulgaria. Събитието се подкрепя и от Telerik и Datecs. В периода 2006-2010 г. български отбор участва в локалните състезания в Германия. През 2011 г. се организира първият локален кръг за България, в който ще вземат участие над 10 отбора.
Tags: FIRST LEGO League, FLL, LEGO Mindstorms, LEGO Mindstorms NTX, Mindstorms NXT-G, Robopartans, роботика, състезание, състезание по роботика
Author: Svetlin Nakov
November 22, 2011
Колегите от Майкрософт България и .NET потребителската група SofiaDev.NET организират безплатни отворени обучения по HTML5, CSS3 и JavaScript в Технически университет – София.
График на обученията по HTML5, CSS и JavaScript
| Дата |
Тема |
29.11.2011, 19:00, ТУ-София (не е уточнена зала) |
Теоретични познания
- Introduction to HTML 5
- HTML5: What is It?
- New Semantics
- New JavaScript APIs
- CSS3 Overview
|
15.12.2011 – ТУ-София, 1112, 18:00 12.01.2012 – ТУ-София, 1112, 18:00 9.02.2012 – ТУ-София, 1112, 18:00 (избира се една от трите дати) |
Практически упражнения
- HTML5 Forms
- New Input Types
- CSS3 Pseudo Classes
- From Validation
- Custom Rules
|
Регистрация за безплатните HTML5 обучения
За участие в безплатните HTML5 обучения трябва да се регистрирате на сайта на организаторите: http://events.msbgregistration.com.
Още за HTML5 инициативата
Събитието е част от инициативата “Технологии набъдещето” на Майкрософт и SofiaDev. Първите обучения разглеждат HTML5, CSS3 и JavaScript и ще се проведат в 2 формата − семинарен и лабораторен.
Първият семинарен формат включва детайлно представяне на спецификите на стандартите и основните концепции, с които се сблъскваме при изграждането на приложения с тези технологии.
Лектори в HTML5 обученията
Презентациите и упражненията се осъществяват със съдействието на нашите партньори от OneBit Software. Водещ на срещите ще бъде Ради Атанасов – SharePoint експерт, с компетенции Microsoft Certified Master (най-високото ниво сертификация, което покриват едва 20 души в целия свят), Microsoft Most Valuable Professional, лидер и организатор на българската Web Platform потребителска група, лектор на редица големи международни конференции и един от най-големите технологични фенове не само в България, но и в целия свят.
Tags: CSS, CSS3, HTML, HTML 5, HTML5, JavaScript, SofiaDev .NET User Group, безплатен курс, безплатни курсове, безплатни уроци, Майкрософт, Ради Атанасов, ХТМЛ5
Author: Svetlin Nakov
November 19, 2011
На 22, 23 и 24 ноември 2011 г. в центъра за симулация, бизнес процеси и 3D визуализация във ФМИ на СУ ще се проведе безплатно тридневно обучение по разработка на софтуерни системи и решения за електрoнно управление (e-government).
Безплатният курс по електронно управление ще се води от корейски специалисти, разработили концепцията “eGovernment Standard Framework”. Курсът представя съвременни архитектурни и технологични решения и концепции за изграждане на сложни многослойни софтуерни системи и конкретна реализация с Java технологиите в областта на електронното управление.
Учебна програма на курса eGovFrame
Tags: eGovFrame, безплатен курс, безплатно, безплатно обучение, електронно правителство, електронно управление, семинар
Author: Svetlin Nakov
November 12, 2011
За феновете на цивилизованата разработка на софтуер колегите от българската .NET потребителска група (SofiaDev) организират семинар на тема “Работа със системи за управление на сорс код”.
Анотация на семинара
Системите за управление на сорс код (СУСК) са сърцето при разработката на всеки софтуерен продукт. С течение на годините тези системи се развиха и претърпяха много промени. Тази лекция има за цел да ви запознае с основните принципи при работа с различни по вид и произход системи за управление на сорс код. Ще разгледаме човешкия елемент, който съпътства използването на тези системи. За финал ще демонстрираме последните разработки по някои СУСК. Въпроси и дискусия в края на лекцията са повече от добре дошли.
Дата, час, място
Семинарът ще се проведе на 17.11.2011 г. от 19:00 часа в ТУ-София, зала 1152.
Лектор е Мартин Кулов – регионалният community директор на Майкрософт за България

Мартин Кулов е Майкрософт Евангелист в ProPeople ApS. Той има близо 15 години опит във всички етапи от разработката на софтуерни приложения. Мартин е член на INETA Speakers Bureau и често води лекции по международни конференции, семинари и потребителски групи. От 2006 г. до сега е награждаван ежегодно от Майкрософт с титлата Most Valuable Professional (MVP). Сертифициран е от Майкрософт като инструктор и програмист по програмите MCT, MCPD, MCSD и др. Основна и водеща роля има в основаването на международната конференция DevReach – www.devreach.com. През 2010 година Мартин бе приет в престижната програма Microsoft Regional Director. Блогът и сайта на Мартин може да намерите на адрес – www.kulov.net.
За SofiaDev .NET потребителската група
SofiaDev.NET е първата .NET потребителска група в България. Групата организира срещи, на които се дискутират новостите в областта на Microsoft технологиите, основни принципи на разработването на софтуер и софтуерното инженерство.
Настоящите лекции са част от инициативата на SofiaDev.NET да запознае начинаещи и бъдещи програмисти с основни концепции в разработването на софтуерни приложения и използването на Microsoft технологии.
Лекциите са на български език, напълно безплатни и се водят от лектори с дългогодишен опит. Следете фейсбук групата на SofiaDev.NET за повече информация за време и място на планираните срещи.
Tags: SofiaDev .NET User Group, version control repositories, version control systems, Майкрософт, Мартин Кулов, семинар, системи за управление на сорс код, сорс контрол системи
Older Posts »