Yellow Belt

//Училище : Технологично училище “Електронни системи” към ТУ-София
//Клас: 11 Б
//Номер: 8
//Име: Виктор Георгиев Стоянов
//Задача: Да се намери сбора на първите 10 числа от .csv file

import java.io.*;
import java.util.*;
import java.lang.*;

class Yellow{
public static void main(String[] args){
float[] time = new float[10];
String fileName = args[0];
String line;
int i =0;
try{
BufferedReader reader = new BufferedReader(new FileReader(fileName));
while((line=reader.readLine())!=null){
time[i]=Float.parseFloat(line.split(“,”)[0]);
i++;
}
reader.close();
}catch(Exception e){

}
float timeSum = 0;
for(int j=0;j<10;j++){
timeSum += time[j];
}
try{
BufferedWriter writer = new BufferedWriter(new FileWriter(“TopTests.csv”));
writer.write(timeSum + “;\n”);
writer.close();
}catch(Exception e){

}
}
}

First exam

For our first exam we needed to make a program on any language that we want, which was ment to read a csv file and write to an other one. It sounds easy, but less than 10 students have done it. Maybe it’s because the time was very limited or maybe we were just not prepared for this. However no one from the 6 people that did it used java. This may be because java is a good OO language and for such sort task you need to write a lot lines just to make the code works properly, while the whole code on ruby is less than 10 lines.

Here’s the link to the task using ruby:

https://github.com/powerworr/TP/blob/master/C8/Yellow_belt.rb

Here’s the link to the task using java:

https://github.com/powerworr/TP/blob/master/H9/YellowBeltJava.java 

How to use Github Ubuntu

GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both paid plans for private repositories, and free accounts for open source projects. As of May 2011, GitHub was the most popular open source code repository site. And I’ve started using it lately on both on Ubuntu and Windows and from my personal expirience I want to say that here the windows (8) app is a lot easier to use and saves a lot of time. But how ever I think there is no need for a tutorial on how to use Github with the windows app so I am going to explain to you how to use it through Ubuntu.

Ubuntu:
First you need to configurate your user name and email by using the commands:
git config –global user.name “username”
git config –global user.email “Email”

https://powerworr.wordpress.com/gallery/#jp-carousel-127

The next thing is to initialize an empty repository and copy yours there. This is made by using using the HTTP link and the following commands:
git init
git clone “repositoryURL”



https://powerworr.wordpress.com/gallery/#jp-carousel-128
https://powerworr.wordpress.com/gallery/#jp-carousel-130

After that you need to enter your cloned repository and copy your files inside or just start working there, which is the better option in my opinion.

https://powerworr.wordpress.com/gallery/#jp-carousel-131

And we are just few steps away from the end. When you have done this just add the files to your commit, actually commit and push everything to your online repository:

git add . (where the dot is used to add all new files to the commit)
git commit -m “theReason” (you need to use -m “text”, where text is the reason for your commit)
git push


https://powerworr.wordpress.com/gallery/#jp-carousel-135

When you use “git push” you’ll get a message that tells you to write your Github username and password. When you write them both you are ready with everything and you can go to your repository in Github.com and look the new added files.

https://powerworr.wordpress.com/gallery/#jp-carousel-136

Most popular person in class

This tuesday was pretty intresting, because we all went out of the building with 1 paper and pen per student and wrote our numbers on the papers of our classmates. Despite that it was quite a mess we managed to fill 29 papers with 29 numbers per page. Then we went back to the computers and made 29 csv files in which we entered the info from the papers. Afterwards we needed to spread this sheets so that everyone can work with all of them. And after all of you got all the csv files we were told to make a program which shows, which is the most common number on the papers, which is the most uncommon, who is on which paper most common… etc.

Task:

https://docs.google.com/document/d/1cICd34PbUugfGjPO2FmAABreKEQhAEeJgaOh9Vzw6IY/edit

My program:

https://github.com/powerworr/TP/blob/master/H7/Count.java

Air plane seats arrangement

This time we had to write a program that arranges the seats in a normal plane with 27 rows and 6 seats(3 on the left and 3 on the rigth) at each row. I had no choice and needed to write it using Java and Ruby. It wasn’t hard at all, despite that most of my classmates are complaining about this task.

Here’s the link to my repo with the source codes:

https://github.com/powerworr/TP/tree/master/H6

An other school homework, but this time I used java

I didn’t expect to start coding on so many languages so fast, but how ever I don’t mind it. Our homework for this time was to read a csv file again, but this time with java, and to read java system properties. It wasn’t hard at all, but I’ve wasted most of my time running the program without compiling it, because its one of my first time using ubuntu that much. And before that i spent a lot time configurating the correct java and gnu nano editor, because I have tried on windows first. Here’s a link to the task that we needed to do:

http://lubo.elsys-bg.org/wp-content/uploads/2009/02/introduction_homework.pdf

and to my homework:

https://github.com/powerworr/TP/blob/master/C5/HomeWork1.java

Despite that I wasted few hours just because I needed to work with ubuntu and it wasn’t an application with graphic interface, I’m starting to like ubuntu and those editors.

My PPS Homework

UNIX

Виктор  Георгиев Стоянов

Технологично училище “Електронни системи” към ТУ-София, www.elsys-bg.org

  1. Въведение

Unix е компютърна операционна система, разработена през 60-те и 70-те години на миналия век от група специалисти от AT&T, работеща в Bell Labs. Част от тези тази група са Кен Томпсън, Денис Ричи и Дъглас МакИлрой. В днешно време Unix има различни версии, разработени през годините от AT&T, както и от други комерсиални доставчици и некомерсиални организации.

Сегашният собственик на търговската марка UNIX е консорциумът за индустриални стандарти The Open Group. Правата върху изходния код на Unix обаче са оспорвани в дело от 2004 г., в което доставчикът на UNIX SCO Group обвинява Novell в оклеветяване на името . Забележете, че собственикът на търговската марка използва названието UNIX, а не Unix. Терминът UNIX не е акроним, а следва историческата конвенция компютърните системи да се именуват с главни букви като ENIAC и MISTIC.

Само системи, напълно съвместими и сертифицирани по UNIX спецификацията Single UNIX Specification  могат да се наричат “UNIX”. Другите се наричат “Unix-подобни” .

В началото на 70-те и 80-те, когато компютрите не са толкова разпространени, академичните кръгове са вдъхновени от Unix, което води до широкомащабното ѝ възприемане и то най-вече на варианта BSD, създаден в Калифорнийски университет – Бъркли, а също и от нови компании като Sun Microsystems. В наши дни в допълнение на сертифицираните Unix системи, Unix-подобните операционни системи като Linux и Mac OS X са често срещани.

Понякога названието традиционен Unix се използва за Unix или за операционна система с характеристики на Version 7 Unix или UNIX System V.

Unix операционните системи се използват както за сървъри, така и за работни станции. Този вид среда и моделът клиент-сървър са основни елементи при разработването на Интернет и при създаването на компютърните мрежи, тоест в контраст с разработките на операционни системи за персонални компютри.

Както Unix, така и C, разработени от AT&T и разпространени в службите на американското правителство и академичните институции, са приспособявани към различни архитектури и операционни системи. В резултат на това Unix се свързва с понятието “отворена система”.

Unix е проектирана като преносима, многозадачна и многопотребителска, когато е във времеразделяща конфигурация. За тези системите са характерни особености  като, използването на неформатиран текст за запазване на данни, йерархична файлова система. Също така устройствата и някои видове процеси се третират като файлове, използват се голям брой малки програми, които могат да бъдат навързани заедно чрез интерпретатор на командна линия и чрез канали, в контраст с използването на една монолитна програма със същата функционалност. Тези концепции са известни като философия на Unix.

В Unix, “операционната система” се състои от тези инструменти заедно с ядрото kernel, коетое основната контролираща програма. Ядрото отговаря за пускане и спиране на програмите, за работа с файловите системи и за други задачи от “високо ниво”, които са общи за повечето програми. Най-важната му задача обаче е, че то контролира директния достъп до хардуера и разрешава конфликтите, като например когато две програми едновременно искат достъп до едно и също устройство. Затова ядрото има специални привилегии за достъп до системата, което води до отделянето на “потребителско” и “системно” пространство.

Микроядрото се опитва да намали размера на ядрото, като разделя ядрото на много малки части изпълняващи определени операции. Във времената на мейнфрейм машините, когато “нормалният” компютър се състоеше от твърд диск и терминали за вход-изход, файловият модел на Unix работеше много добре, тъй като входно-изходните операции бяха “линейни”. Но модерните системи имат и по-нови периферни устройства и използват графичен потребителски интерфейс, при който действието с мишката е нов, “събитиен модел” и моделът на Unix не функционира така добре. През 80-те разработчиците насочват усилията си към системите, поддържащи тези нови устройства, за да осигурят неблокиращ вход-изход, да създадат варианти на междупроцесна комуникация, различни от pipe, както и за изваждането на мрежовите протоколи от ядрото.

2. Компоненти

UNIX системата е направена от няколко елемента, които по принцип са пакетирани заедно: Ядрото kernel и още – среда за разработка, библиотеки, документи и преносимия програмния код. UNIX е всичко в едно – пълна софтуерна система. Това е ключовов развитието на операционната система – била използвана за обучение, предизвикала голям интерес. Всички тези компоненти не направили системата голяма или по друг начин казано оригиналната V7 UNIX дистрибуция, съдържаща всичко необходимо плюс сорс кода и документацията не били повече от 10 мегабайта.

3.  История

През 60-те, Масачузетският технологичен институт, AT&T Bell Labs и General Electric работят по експерименталната операционна система Multics, където името идва от Multiplexed Information and Computing Service, предназначена за мейнфрейм компютъра GE-645. Целта е създаването на комерсиален продукт, но успех не е постигнат. Multics е интреактивна операционна система с много нови възможности и повишена сигурност. В резултат от проекта е създаден краен продукт, но с много ниска производителност.

AT&T Bell Labs се оттегля и насочва ресурсите си към други проекти. Един от разработчиците от екипа на Bell Labs обаче, Кен Томпсън, продължава да работи, и създава игра за GE-645 мейнфрейм, наречена Пътуване в пространството  или  „Space Travel“ на английски. Но изпълнявана на GE машината тя е бавна и доста скъпа – изпълнението ѝ струва $75 от дефицитното компютърно време.

С помощта на Дени Ричи Томпсън пренаписва играта на асемблер за друга машина на Digital Equipment Corporation – PDP-7. Този проект заедно с работата му по проекта Multics, кара Томпсън да започне работа по нова операционна система за PDP-7. Той и Ричи ръководят екипа от разработчици от Bell Labs, сред които и Руд Канадей , разработващ файловата система както и новата многозадачна операционна система. Тя включва интерпретатор от командна линия.

През 2000, SCO продава целия UNIX бизнес на Caldera Systems, по късно променила името си на The SCO Group. Този нов играч на пазара започна съдебни процеси срещу потребители и доставчици на Linux. SCO твърдят, че Linux съдържа защитен от закона Unix код притежание на The SCO Group. Другите твърдения са нарушение на търговската тайна от IBM, или нарушаване на договора от бивши клиенти на Santa Cruz преминали към Linux. Но Novell отрича твърденията на SCO че държи правата на UNIX кода. Според Novell, SCO са франчайз за Novell, която държи основните права, и право на вето към лицензиите давани от SCO, и 95% от прихода. SCO Group не е на това мнение и го оспорва в процеса наречен SCO срещу Novell.

През юни 2005 година, Sun Microsystems решават да открият част от изходния код на Solaris 10 и да стартират проекта OpenSolaris.

4. Въздействие

UNIX оказва значително въздействие върху всички следващи операционни системи. За разлика от използвания при ранните компютри асемблер тя е написана на език от високо ниво.

В сравнение с много съвременни операционни системи, третиращи всички видове файлове като към прости масиви от байтове, Unix има драстично опростен файлов модел. В йерархията на файловата система, в която се съдържат и служебните програми и периферните устройства, като например принтери, терминали, или дискове, е необходимо да се осигури единен интерфейс. Това обаче не пасва на простия модел за “поток от байтове”.

Unix популяризира йерархичната файлова система с произволно вложени субдиректории, първоначално въведена от Multics. Останалите разпространени операционни системи в тази ера също можеха да разделят запаметяващото устройство на директории или сектори, но те най-често се ограничаваха само до едно ниво. Няколко големи частни операционни системи накрая разшириха обхвата на под-директориите подобно на Multics. Йерархията DEC’s RSX-1M’s за “потребителска група” се развива в така наречените VMS директории, а CP/M се развива в MS-DOS 2.0 субдиректория, докато йерархията на HP MPE group.account и IBM SSP и OS/400 системи библиотеки се свива в по-обширните POSIX файлови системи.

Друго нововъведение на Multics, разпространено от Unix, е създаването на команден програмен интерпретатор с командна линия, достъпна на потребителско ниво и с допълнителни команди, които са представени като отделни програми. Unix ядрото използва същия език за интерактивни команди, който се използва за скриптиране, защото shell скриптовете нямаха отделен контролен работен език както JCL на IBM. Понеже shell- а и командите на операционната система били просто “още една програма”, потребителят можеше да избере или дори сам да напише собствения си shell. Нови команди може да се добавят без шелът да се променя. Нововъведената командна линия на Unix за създаване на вериги от процеси тип производител-потребител, представлява един мощен програмен модел, широко достъпен за всички. Много от по-късно създадените интерпретатори с командна линия са вдъхновени от Unix shell-а.

Най-опростеният подход при Unix беше изборът на ASCII текст за почти всички файлови формати. В оригиналната версия на Unix нямаше двоични редактори, а цялата система беше конфигурирана чрез използването на командни скриптове в shell- a. Фокусирането върху текста и байтовете направи системата далеч по-мащабируема и подвижна от други системи. С времето текстово-базираните приложения доказаха, че са широко използваеми в други области, като например печатни езици като PostScript и интернет протоколите, като например Telnet, FTP, SMTP, HTTP и SIP.

Unix популяризира синтаксис за правилни изрази, който намери широко разпространение. Програмният интерфейс на Unix се превърна в основен стандарт на операционните системи. Програмният език С, скоро разпространен и извън рамките на Unix, вече се използва в много системи и приложения за програмиране.

Ранните Unix разработчици допринесоха за теорията на модулацията и повторната употреба в софтуерната инженерна практика, използвайки “Софтуерния” растеж.

Unix осигурява TCP/IP мрежовите протоколи за сравнително евтини компютри, които допринесоха за интернет експлозията, осигуриха свързаност в реално време и които формират основата за изпълнението на много други платформи.

Политиката на Unix за предимно он-лайн документация (поддържана в продължение на много години) и готовите системни кодове, достъпни за всички програмисти, дава началото на движението за “софтуер с отворен код” през 1983. Водещите разработчици на Unix (и на програми, които го напускат) открай време се придържат към определен набор от културни норми за разработка на софтуер, които са станали също толкова важни и толкова влиятелни като технологията на Unix; това е наречено „философията на Unix“.