Thursday, December 25, 2014

Skiing and Ukrainian

Ukrainian 100/100 and skiing achievement unlocked. What a day!

Monday, December 22, 2014

Motivation and bullshit

How do you feel when someone calls your code a piece of bullshit?
For me, as I am very not self-confident, this was very discouraging. But it was motivating as well, such an oxymoron. I remember, when some senior student told me, that his teacher would rather kill him than allowed him to write code the way I did. I was so much upset, but then, year after I became one of the best students in my group and also had good -- or even very good, as I always lower my self-esteem -- knowledge of C and Linux. Well, at least I got excellent marks at my operating systems course and course project. And my colleagues rate me as a really good and, wie es man sagt, zukunftweisend at programming. Some of them even call me "warior" =)
So, if you ever will face any kind of critics -- don't just go away or stop doing, what are you  currently doing. Even with my lowered self-esteem I can say for sure, that I am now way better dev, than the guy, who criticized me a year ago. And even if my python script is a bullshit, I will become a way better python dev, when I finish my server-side xcb task. Take that, unknown python wanna-be pro!

And, what can ever be more motivating, than a call from Google? I got one today :D
Just for the history: Google recruiter called me today to talk about internships opportunities. I am more than sure, that I won't fit, because, oh my god, who am I to work at Google, am I asleep? Even more, with OP I got no time to work on other projects. But maybe in not so distant future...

Saturday, December 20, 2014


Well, I'm currently building the

I'm using qemu and though it's really gorgeous, it's sooooo slow. Or it seems to be.
I've been installing for 4 hours (with all the required libs and additional packages). I got bored and made up my mind to practice python (as python it's is one of required skills for my server-side xcb task).

I needed an app to convert my numerous source code files from the OS course project to the single pdf to present and see the professor's comments. Yes, it's pretty useless app, nobody needs to print the source code as pdf nowadays, except me. Anyway, it took not so much time, I practiced python instead of just starring at the black installation screen and I won't have to copy and paste all the source files and then convert to pdf.


import os
import re

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_JUSTIFY
from reportlab.lib.pagesizes import letter

def code_to_text(regpattern = 'py$',
 spath = os.getcwd(), 
 dpath = os.path.join(os.getcwd(),"code.pdf"),
 fontsize = 10, 
 fontface = "Ubuntu Mono",
 left = 5,
 right = 5,
 top = 5,
 bottom = 5, 
 cmnt = '#'):
 """Converts numerous source files into one pdf file to print and present
 story = []
 styles = getSampleStyleSheet()
 for path, dirs, files in os.walk(spath):
     for f in files:
             if, f) != None:
   fd = open(f)
   head = cmnt + ' ' + f + ' ' + cmnt
   story.append(Paragraph(head, styles["Normal"]))
   story.append(Paragraph(, styles["Normal"]))
      story.append(Spacer(1, 12))
 doc = SimpleDocTemplate(dpath, 

I used the reportlab.pdfgen lib to generate pdf and os.walk to walk through the files. 
User can filter the files to process with regexp, e. g. per default it's 'py$' -- python source files, 'cpp$' -- c++ and so on, I used re to make this happen
I'm about to implement font face and size specification.

Specify the margins with left-, right-, top- and bottomMargins. (As for me, I specify 5 for each one, so I will pay less money when printing the pdf)

About the comment signs. I planned to calculate the target comment sign right from the specified file extensions, e. g. '#' for 'py$' files or ';' for masm32 files, but then I realized it's too dummy a decision -- there are so many programming languages, I won't be able to build a db with all the extensions corresponding to comment signs. So I let user just specify it as a regular symbol. Not a reliable decision. But better then building a db for every single programming language. It's just a 4-hours script, I will not spend an hour working on it after the implementation of font face and size specs. Thinking about spending some more time useless drove me crazy, so I just let it be a sign.

Tomorrow I'll try to build xserver again, hope this time I'll do it and go further with my task.

Learn python!

P. S. Yes, it manages new lines horribly, to be frank it doesn't manage them at all! But I'll fix this.
P. P. S. How much coding is easier then deploying, dear god

Part II

I improved the script to the normal state, features featuring:
  • It will walk ok using dfs and won't get into .git subfolders
  • User will be able to specify the font and the font size
  • It manages indents ok (kludge detected!)
You also can enjoy my solution's sweet N^3 complexity. Argh, I just don't know how to make it faster, so I'll just let it be so.
I also shared it on bitbucket. Feel free to clone:
And after spending an hour designing the regex to find all the \.c$ | \.h$ files in the breezy dir I came up with thought that using regexes was not such a good idea...
Don't write kludges!

Wednesday, December 10, 2014


So, today I got 100/100 for my operations systems course project "Breezy".
I'm so proud of myself.

Monday, December 8, 2014

Pivot tables

omg, who could ever invent this

Outreach Program starts tomorrow

Ok, I am a participant of GNOME OPW now.

If I could send myself back in time and tell 12 years old Asah that she will participate GNOME sponsored project to write a generator with Python, she would never-ever believe it. Myself, being 19 years old, can't believe it till now.

This is a milestone.

If you discovered this program, don't hesitate to submit a small contribution and try to participate. To clarify some things: to participate GNOME Outreach Program for Women you need to:

  • Be, as official GNOME website says "women (cis and trans), trans men, [or] genderqueer"
  • Pick a project and find out, what kind of initial small contribution can you deliver. 
  • Find a mentor, fixed to this project
  • Complete the initial contribution (The hardest part)
  • Commit what you have done, alternatively, send it to mailing list, another words, publish your achievements (mentor will tell you how to do it)
  • Wait
If heads of the project you selected find you good enough, you will get an unique (once in a lifetime!) opportunity to participate OPW. considered me good enough, that was such a big surprise.

To be honest, at first I wanted to participate GSoC and I haven't even knew about OPW. As this two programs are often compared, surfing the web about GSoC I found this poster:

As it was too early yet for GSoC I tried to participate OPW. There were 2 days left before the end of registration. I didn't know a bit about X11, except that it is related to window drawing in Linux. 
I thought I had no chances. But with support of honorable Christian Linhart, my mentor, I completed the task: to write a test case for fresh patch to XCB.

It was hard and it will be only harder, but if I complete this, I will be proud of myself as never before.

Sunday, December 7, 2014

Don't you ever maintain several projects at the same time

I'm currently a member of this projects:

  • IT company and Uni cooperation as a QA engineer of distributed server-client java game and this is hell. I'm not close with Java at all and also I had to learn SO MANY FRAMEWORKS, like osgi implementation called Apache Karaf, JUnit, Apache JMeter, Jenkins CI server, Mockito mocking framework and so on. RAPID LEARNING as it is. And so agile.
  • Another IT company and Uni cooperation program called Lab as a member of clipboard sharing crossplatform app. This required learning of network communication and TCP/IP stack and Qt.
  • Chair ordered me a huge and scary server-client web project to compute uni rating. Spring, DAO, Liquibase, MyBatis, REST, Javascript, tomcat and so on.
  • My operation systems course project. I cannot even describe, how complicated it is. bash generator, pure C89 code, graph search, fcntl. I wanted to make shared memory here, but I just have no time.
  • Social networks online correlations python script (I left it).
Too much. 
And Outreach Program start is soon. I'm so exited, but I'm too tired to write sth now. Wait for a post later, but before 9th December.

Don't you ever maintain several projects at the same time.
Never ever again.

P. S.
I just had my laboratory work done, overloading operators for huge class system. Why have I done this? This wasn't in the requirements. Because I JUST CAN'T KEEP IT SIMPLE. But you should.
P. P. S. And if someday you would find the idea of splitting to several task attrative, just remeber that
I ended up coding 24/7, sleeping less then 6 hours per day, losing advanced stipend at Uni, could not take a breath, most of time depressed or crying, procrastinating and having my head aching.

Tuesday, November 18, 2014

Depth-first search

Course project of operation systems is coming soon, so I spend a lot of time coding it.
This time I needed to code some DFS for my routes graph search, so I did it!
Congratulations to me!
With some help of this.

Friday, November 7, 2014


This was my first makefile experience!!!
Wow, this was cool. Project, called breezy is my course project of server-client application. I create the asyncronious server storage API with shared memory.

objects = main_test.o storage.o tree.o breezy : $(objects) gcc -g storage.o tree.o main_test.o -o breezy storage.o : server_storage/storage.c server_storage/storage.h gcc -c -g server_storage/storage.c tree.o : tree/tree.c tree/tree.h gcc -c -g tree/tree.c main_test.o : main_test.c tree/tree.h server_storage/storage.h gcc -c -g main_test.c clean : rm *.o

Thumbs up!

Wednesday, November 5, 2014


Heute habe mein zweite Deutschkenntnissprufung abgelegt, den onDaF Test. Ich und einige meine Kollegen haben früher dem TestAS Teilnahme erwiesen, das war der erste Mal, wenn ich den Sprachtest abgelegt habe. Das Ergebnis von TestAS kennen wir noch nicht, werden wir es in einige Monaten erfahren. Doch der onDaF ist ein hier-und-jetzt online Test, also kenne ich schon, dass ich B1 habe. Nicht so schlecht, wie ich dachte. Und jetzt habe ich eine Möglichkeit mein Deutsch in Deutschland mit DAAD Sommerferienkursen zu prüfen. Es ist ja wunderschön!

Die alte Notiz war am 
05.11.14 07:09
Pacific Daylight Time
veröffentlicht, und heute ist schon der 4. Mai 2016. Die Zeit läuft! Ich habe schon meine B2 und hoffentlich, habe ich den TestDaF, den ich am 20. April abgelegt habe, bestanden. Die alte Notiz ist extrem schwierig zu verstehen, mein Gott. Aber wer kennt, was werde ich über diese Notiz in ein Paar Jahren sagen. Ich habe insgesamt neben 4,5 Monate in Deutschland verbracht und habe vor drei Tagen aus Lohr zurückgekommen, also mein Deutsch ist jetzt sehr gut. Ich habe ein bisschen Angst meine Deutschkenntnisse im Laufe der Zeit zu verlieren, deswegen habe ich entschiedet, deutsche Bücher zu lesen. Ich weiß aber noch nicht welche :D

Monday, August 4, 2014


I've just compiled my first exe executable!!!

Friday, June 20, 2014


C++ how to program by Deitel
Head first Java by Kathy Sierra & Bert Bates
Operating systems by Deitel
Operating systems: Internals and design principles by Stallings
Unix System Programming Using C++ by Terrence Chan
Assembly -- Programming Lessons by Rudakov & Finogenov

Saturday, April 19, 2014

how to find on linux

Find is a realy fast and convenient way to search through your filesystem. To find any file by name just type:

[sudo] find -name 'name_of_file'

sudo is required if you're seeking in the directories you don't own. Flag means searching by name. Words in single quotation marks are the name of the files you search. Like almost everytime in linux, you can use regular expression as a keyword for find.
Like, if you wanted to find a file but didn't remember it's name except 2 first letters:

[sudo] find -name 'na*'

Just a short reference for regexps:
* replaces any kind of character of any quantity.
? replaces any single char
for more detailed reference 

The second most often used flag using find for me is -type d, which means you want to find a directory:

[sudo] find -type d -name 'fooDir*'

and this command finds any dir in within the pwd(present working directory) which name is fooDir(any amount of any chars here).

For more detailed reference do  

man find

Friday, April 18, 2014


Отсюда мораль: используйте const всюду, где возможно.
Если вы обозначаете глобальные переменные или локальные переменные в большой функции такими
именами, как i или x, то сами напрашиваетесь на неприятности.
Если члены массива обязательно надо инициализировать разными значениями, то начинаются трюки с
глобальными или статическими членами.

S. N.

Надо самому накодить хрень и понять что она хренть. Посмотреть как сделали другие и проникнуться красотой их решения. Почитать книжку и ощутить гибкость подхода. Но без первого пункта - не выходит)

Wednesday, April 9, 2014

Qt and Boost

I achieved installing the highly respective Boost libs to my Ubuntu 13.10 and also including libs to Qt.
Follow these steps:

  2. and then just add to your .pro file:

               INCLUDEPATH += /usr/local/boost
        LIBS += -L/usr/local/boost/ -lboost_archive

Thursday, March 20, 2014

std::exponential_distribution distribution(lambda);

Читати справжні надруковані книги, виявляеться, так захоплююче!

Monday, March 17, 2014


Few days ago we participated OpenClass competition. Failed. Me, Paul and Dmytro. It's ok, the tests were not so easy.
I also learned to control non-human-operated programs: main with params!!
I am so proud of myself! Ch. D. V. would be proud of me too :D

Sunday, March 16, 2014


is soooooooooo sweet, it draws some kinda little bars for me on show tables; !!! :D

mysql> show tables;
| Tables_in_thevery1stdb |
| thev1sttableever       |
1 row in set (0.00 sec)
And Scooby-doo is damn so scary, even when I'm grown up, it's hella scary!

And it also says "Bye"!!!
yup, my first IDE-DBMS interaction!!

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
   bool ok =;
   qDebug() << db.lastError().text();

   QSqlQuery query;
   //query.exec("CREATE TABLE NEW(id int)");
   query.exec("SHOW TABLES");
        QString res = query.value(0).toString();
        qDebug() << res;

        qDebug() << "yes";

No, meal, NO!! Why do you mess everything up!?! I want to code, not to eat!

Thursday, March 13, 2014


Today Ch. D. W. has sent me a smiley! =)

You're a SIGIOT!
Today we've been listening some words about graphs for twelfth time.



Friday, February 28, 2014


Да! Таблица вытащилась из бд! Я молодец! create, update и delete работают! Все хорошо. UR делается

Tuesday, February 4, 2014


наконец-то написала
я молодец
для задачи 1025(timus)