Archive for the 'Розробка софту' Category

Локальна машина часу або чому Git Rulez!

вівторок, Листопад 17th, 2009

distributed_vcsГаразд, вступу про користь і потрібність використання систем керування версіями не буде — це банально і тупо.

Проблема у тому, що їх використовують переважно для годиться, або ж тому що цього вимагає корпоративна/проектна політика. До того ж, далеко не найефектнішим чином, сприймаючи їх просто, як “місце, де зберігається уся ця фігня”. Гаразд, про це також не будемо, бо і це тема, про яку дуже багато написано.

Існує інша серйозна, і чомусь мало висвітлена (а може я просто надто мало читаю?) тема — фіксація зроблених змін. Під час, скажімо, періоду баґ фіксингу, усе зрозуміло: зафіксив баґ, [залив на review board,] закомітив. У такому випадку, і тобі просто організовувати політику комітів, й історія на сервері виглядає гламурною. Що ж робити під час активного девелопменту? Зі своїх спостережень, можу сказати, що більшість комітить власний код або у кінці робочого дня, за 30 секунд до вимкнення комп’ютера, або ж коли той комусь потрібні (колезі, тім ліду, рев’юверу, менеджеру, клієнту…).

Read the rest of this entry »

rozrobka.com — соціальна ІТ спільнота

середа, Серпень 19th, 2009

rozrobka_comУсе відбувається якось само собою. Ти чогось очікуєш від інших, і нікуя не отримуєш. Тільки на усе забиваєш, і перестаєш на будь що від них сподіватись, і намагаєшся просто мовчки робити що-небудь бодай для того, щоб не отупішати, і отримуєш усе те, від бажання мати чого нещодавно бризкався слиною, і ледве стримувався, щоб не вкакатись.

Я просто в невібенному шоці — багатомільйонна європейська нація з кількістю розробників, які можуть створити три кремнієвих долини почала щось робити. Ну і типу зустрічайте: rozrobka.com.

Я аж ціпенію від шоку: здавалося б, стільки хороших перспективних хлопців, а інколи так туплять, що хоч бери, і головою цв’яхи забивай… Хоча, я все одно вірю, що усе буде меґа кльово!

GTK+ — 8. GtkImage та GtkIconView

вівторок, Серпень 11th, 2009

У цій частині трішки попрацюємо з графікою, а точніше, з кількома досить простими, але часто використовуваними віджетами для роботи з нею: GtkImage та GtkIconView.

GtkImage

GtkImage — досить простий віджет для відображення растрових зображень.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <gtk /gtk.h>
 
 
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *image;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
    gtk_window_set_title(GTK_WINDOW(window), "Red Rock");
    gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
 
    gtk_container_set_border_width(GTK_CONTAINER(window), 2);
 
    image = gtk_image_new_from_file("redrock.png");
    gtk_container_add(GTK_CONTAINER(window), image);
 
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window));
 
    gtk_widget_show_all(window);
 
    gtk_main();
 
    return 0;
}
</gtk>

У вищенаведеному прикладі ми завантажуємо, і відображаємо світлину замку.

Встановлюємо 2-піксельну рамку навколо зображення:

1
gtk_container_set_border_width(GTK_CONTAINER(window), 2);

Завантажуємо зображення з файлу і додаємо його до контейнеру:

1
2
image = gtk_image_new_from_file("redrock.png");
gtk_container_add(GTK_CONTAINER(window), image);

gtkimage

Read the rest of this entry »

GTK+ — 7. Прапорці та комбіновані списки

середа, Квітень 22nd, 2009

Продовжуємо огляд віджетів основних елементів графічного користувацького інтерфейсу. Цього разу про кнопки-прапорці та комбіновані списки.

GtkCheckButton

GtkCheckButton — віджет, який має два стани: увімкнено і вимкнено. Стан “увімкнено” візуально відтворюється, як встановлений прапорець.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <gtk /gtk.h>
 
 
void toggle_title(GtkWidget *widget, gpointer window)
{
    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
        gtk_window_set_title(window, "GtkCheckButton");
    } else {
        gtk_window_set_title(window, "");
    }
}
 
int main(int argc, char** argv)
{
    GtkWidget *window;
    GtkWidget *frame;
    GtkWidget *check;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
    gtk_window_set_title(GTK_WINDOW(window), "GtkCheckButton");
 
 
    frame = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), frame);
 
    check = gtk_check_button_new_with_label("Show title");
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), TRUE);
    GTK_WIDGET_UNSET_FLAGS(check, GTK_CAN_FOCUS);
    gtk_fixed_put(GTK_FIXED(frame), check, 50, 50);
 
    g_signal_connect_swapped(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(check, "clicked", G_CALLBACK(toggle_title), (gpointer) window);
 
    gtk_widget_show_all(window);
 
    gtk_main();
 
    return 0;
}
</gtk>

У нашому вищенаведеному прикладі ми створили просту кнопку-прапорець, заголовок до якої буде відображатись, або ж буде відсутнім, залежно від того, буде встановлено прапорець, чи ні.

Створюємо віджет GtkCheckButton, зі станок за замовчуванням “прапорець поставлено”:

1
2
check = gtk_check_button_new_with_label("Show title");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), TRUE);

Тут ми прибираємо з нашої кнопки-прапорця фокус:

1
GTK_WIDGET_UNSET_FLAGS(check, GTK_CAN_FOCUS);

А цей код змінюєватиме заголовок кнопки в залежності від стану папорця:

1
2
3
4
5
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
    gtk_window_set_title(window, "GtkCheckButton");
} else {
    gtk_window_set_title(window, "");
}

gtkcheckbutton

Read the rest of this entry »

GTK+ — 6. Кнопки і текстові мітки

понеділок, Квітень 13th, 2009

З цієї частини почнемо розглядати найпопулярніші графічні віджети, які надає GTK+. Першими будуть, як і слід, стандартні елементи графічного інтерфейсу, а саме: кнопки і текстові мітки.

GtkButton

Ось приклад простого вікна з кнопкою, при натисканні на яку викликається внутрішня функція gtk_main_quit(), котра завершує роботу програми:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <gtk /gtk.h>
 
 
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *fixed;
    GtkWidget *button;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkButton");
    gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
 
    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);
 
    button = gtk_button_new_with_label("Quit");
 
    gtk_fixed_put(GTK_FIXED(fixed), button, 50, 50);
    gtk_widget_set_size_request(button, 80, 35);
 
    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gtk_main_quit), G_OBJECT(window));
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
    gtk_widget_show_all(window);
 
    gtk_main();
 
    return 0;
}
</gtk>

Тут ми створюємо кнопку з міткою “Quit” (вийти):

1
button = gtk_button_new_with_label("Quit");

А тут прив’язуємо сигнал “clicked” кнопки до функції gtk_main_quit():

1
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gtk_main_quit), G_OBJECT(window));

gtkbutton

Read the rest of this entry »