1

(24 відповідей, залишених у Інше)

koala написав:

Варіанти:
...
- завести дівчину, більше спілкуватися з непрограмістами;

Покищо це неможливо.
Інші варіанти попробую при нагоді.

P.Y. написав:

У вас виникає відчуття, що ваші думки хтось читає (телепатично, або ж їх можна однозначно реконструювати з ваших дій, і т.д.)?

Колись було таке, але деякий час змушував себе не звертати на це увагу і воно якось пройшло.

FakiNyan написав:

а в когось буває таке відчуття, що в пузі ніби війна почалась, бурлить так?

Травлення викликає механічні коливання. Це нормально.

2

(24 відповідей, залишених у Інше)

1. 6.
2. 6.
3. 4. Тут складно оцінити, бо вивчення мов програмування не є проблемою. А от втримувати в пам'яті якісь елементарні речі (наприклад: шкільна табличка множення) - це вже відчутно мішає в побуті.
4. 4. Інформація про те чи відбулась подія, чи ще ні, якось зберігається, а от послідовність, в якій події відбулись - ні.
5. 2.
6. 2. Іноді складно концентрувати увагу на одній задачі.

Останнім часом ловлю себе на тому, що мені дуже складно висловлювати свої думки. При спробах перекласти послідовність думок на мову спілкування (переважно українську) все частіше приходжу до висновку, що це не можливо. Іноді колеги запитують в мене як вирішити деяку проблему і якщо рішення мені відоме і не зовсім просте, то найбільша проблема для мене - це знайти послідовність слів, яка буде однозначно розпізнаватися всіма учасниками колективу. Ще іноді доводиться пояснювати новачкам, як працює деякий код або алгоритм, тут часто йдуть у використання ручка і папір, щоб надати візуальне представлення, але озвучувати, що я малюю в цей час не вдається.
Також помітно зменшився словниковий запас по всіх розмовних мовах.

Ще одна група побічних ефектів пов'язана з розпізнаванням мови. Коли я не очікую, що хтось може до мене говорити і хтось починає до мене говорити, то я чую звуки, але вони не розпізнаються як слова. Наче якась область мозку (яка відповідає за перетворення звуків в мову) вимкнена по замовчуванню. Доводиться змушувати себе включати "аналізатор".
Також не вдається розпізнавати мову в шумних місцях (на вулиці, в транспорті). Іноді доходить до того, що людина 3 рази повторює фразу, а мені так і не вдалось розпізнати, що він сказав.

Фізичних пошкоджень головного мозку наче не було. Хоча, звідки мені знати, з моєю то пам'ятю.

Помітив, що такі ефекти корелюють з кількістю часу, який було потрачено на створення коду/алгоритму. Наприклад: в одну добу потратив 10 годин на код - зовсім не розумію людей; в іншу добу потратив 2 години - наче все нормально.

Цікавить поширеність подібних проблем серед програмістів.
Оцініть від 0 до 10 включно (де 0 - ніколи, 10 - постійно), як часто у вас проблеми з :
(1) мовою (озвучуванням думок);
(2) мовою (розпізнаванням звуків);
(3) пам'ятю;
(4) ор'єнтацією в часі;
(5) ор'єнтацією в просторі;
(6) іншими відхиленнями.
і напишіть відповідь в темі.

Сам SVG-файл можна зберігати так :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
    <g style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
    <g>
        <path d="M75.92,16.8c-12.58-3.76-22.34,0.58-22.34,12.14c0,11.57,0,55.91,0,63.86"/>
        <path d="M39,36.74c5.35,0,30.01,0,35.64,0"/>
    </g>
    </g>
    <g style="font-size:8;fill:#808080">
        <text transform="matrix(1 0 0 1 73.98 12.61)">1</text>
        <text transform="matrix(1 0 0 1 33.01 34.92)">2</text>
    </g>
</svg>

HTML-файл буде виглядати так :

<!DOCTYPE html>
<html lang="uk">
    <head>
        <title>Title</title>
    </head>
    <body>
        <div>
            <svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
                <g style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
                <g>
                    <path d="M75.92,16.8c-12.58-3.76-22.34,0.58-22.34,12.14c0,11.57,0,55.91,0,63.86"/>
                    <path d="M39,36.74c5.35,0,30.01,0,35.64,0"/>
                </g>
                </g>
                <g style="font-size:8;fill:#808080">
                    <text transform="matrix(1 0 0 1 73.98 12.61)">1</text>
                    <text transform="matrix(1 0 0 1 33.01 34.92)">2</text>
                </g>
            </svg>
        </div>
    </body>
</html>

5

(21 відповідей, залишених у C/C++)

#include <iostream>

char *const replaceAll(char *const str, char const oldValue, char const newValue)
{
    for(char *s(str); *s; ++s)
        if(*s == oldValue)
            *s = newValue;
    return str;
}

using namespace std;

void main()
{
    char str[100];
    cout << "Input string : ";
    cin.getline(str, 100);

    cout << "Output string : " << replaceAll(str, ' ', '\t') << endl;
}

Скомпільовано з використанням MSVC v12.0 :

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe" Replace.cpp /AI "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib" /I "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include" /EHsc /link /libpath:"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib" /libpath:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib"

Кращий варіант :

#include <iostream>

char *const replaceAll(char *const str, char const oldValue, char const newValue)
{
    for(char *s(str); *s; ++s)
        if(*s == oldValue)
            *s = newValue;
    return str;
}

using namespace std;

int main(int argc, char *argv[])
{
    if(argc > 1) {
        char *str = argv[1];
        cout << "Input string : " << str << endl;

        cout << "Output string : " << replaceAll(str, ' ', '\t') << endl;
    }
    else
        cout << "Start program with parameter. Example :" << endl
            << (argc > 0 ? *argv : "program.exe") << " \"abc def ghi\"";
    return 0;
}

6

(2 відповідей, залишених у C#, .NET)

Кожного разу, коли екземпляр класу System.Windows.Forms.Form потребує відрисовки (змінює розмір, розгортається, переміщається, додає/видаляє/показує/приховує елементи керування, ...), він викликає метод OnPaint і всіх делегатів які підписані на подію Paint.
Вам потрібно прочитати :

  1. Малювання штрихових ліній в C#. Функція DrawLine;

  2. Подія Paint;

  3. Метод OnPaint;

7

(2 відповідей, залишених у JavaScript)

Я зберігав би картинки в файловій системі, а в базі писав/читав би відносний шлях до кожної картинки.
Далі запити картинок можна по різному перенаправляти залежно від того, хто повинен отримувати доступ до цих картинок.
Наприклад якщо кожен користувач повинен мати доступ лише до своїх картинок і/або при деяких умовах повинен отримувати доступ до картинок деяких інших користувачів (як це зроблено в популярних соц.мережах), то механізм надання доступу можна реалізувати через токени (рандомні стрічки), які деякий час зберігались би в базі і відправлялись би разом з HTML-розміткою як частини URL'ів, за якими можна отримати зображення.

8

(7 відповідей, залишених у C/C++)

Мабуть, буде використовувати tooltip'и з WinAPI (клік на картинку).
https://i.pinimg.com/236x/94/f1/47/94f147661959b1f3ed0ac9f125abdeb2--ring-cake-lord-of-the-rings.jpg

9

(10 відповідей, залишених у C/C++)

koala написав:

arr+i може здатися додаванням.

Так це і є додавання. До (int)arr додається i*sizeof(int) і результат подається як (int*).

10

(4 відповідей, залишених у Хостинг та домени)

Раніше користувався whois-сайтами і їх API. Але їхні капчі і обмеження по кількості запитів мене задовбали.
Для віндузятників знайшов такі утиліти:

  1. whoiscl (nirsoft, zip, сторінка)

  2. whosip (nirsoft, zip, сторінка)

  3. ipnetinfo (nirsoft, zip, сторінка)

  4. dnsdataview (nirsoft, zip, сторінка)

  5. whoistd (nirsoft, zip, сторінка)

  6. WhoIs (microsoft, zip, сторінка)

Тепер всіх вичислю по IP *JOKINGLY*

11

(10 відповідей, залишених у C/C++)

koala написав:

А просто написати &arr[ i ]?

Це ж той самий arr+i.

                arr+i    &arr[i]
менше символів    +        -
читабельність     +       +/-   // бо можна подумати, що (&arr)[i], а не &(arr[i]).

12

(10 відповідей, залишених у C/C++)

mary_piku написав:

майже те що треба, але має повертати не число яке знайдено, а перший елемент масиву.

Давайте ще раз уважно прочитаємо завдання :

mary_piku написав:

Написати функцію, яка приймає вказівник на масив,кількість елементів масиву і число

Це в нас є (int *arr, int n, int num),
далі :

mary_piku написав:

, і повертає вказівник на перший елемент масиву , в якому знайдено це число або нуль, якщо число не знайдено.

Є масив (arr - вказівник на його початок), масив складається з елементів, ці елементи мають значення (arr[і]) і мають адреси (arr+i - вказівники), в умові чітко написано "повертає вказівник на елемент масиву", не який-небуть, а на перший з тих, значення яких дорівнює переданому числу (num).
Функція, яка замість вказівника повертає значення елемента == не виконане завдання.

upd:

mary_piku написав:

має повертати не число яке знайдено, а перший елемент масиву.

Деяка логіка в ваших словах проглядається (типу як написано, так і роблю), але з цим звертайтесь до того, хто поставив завдання.

upd2:
Умову

mary_piku написав:

повертає вказівник на перший елемент масиву, в якому знайдено це число або нуль, якщо число не знайдено.

можна трактувати ще і так :
Якщо в масиві знайдено передане число, то повернути arr+1;
Якщо не знайдено - повернути 0.

13

(8 585 відповідей, залишених у Інше)

P.Y. написав:

Про які технічні засоби йдеться? Поставити українську розкладку собі на комп чи смартфон в Україні не легше й не важче, ніж десь за океаном — залізо й софт скрізь однаковісінькі.

Залізо і софт то однакові, але наклейки на клавіатурі не однакові. І якщо на пристрій, який є мою власністю, я можу клеїти все що захочу, то з власністю компанії/організації таке не пройде.

14

(10 відповідей, залишених у C/C++)

int *Povern_Vkaz(int *arr, int n, int num) {
    for(int i = 0; i < n; ++i) {
        if(arr[i] == num)
            return arr + i;
    }
    return 0;
}

void main() {
    srand(time(0));
    const int n = 6;
    int arr[n];
    int num;

    Random(arr, n); // заповнення
    Show(arr, n);   // виводимо
    cout << " Vvedit chyslo yake povynno buty v masyvi-->" << endl;
    cin >> num;

    int *result = Povern_Vkaz(arr, n, num);
    if(result) {
        // cout << result << endl;   // виводить адресу
        cout << *result << endl;     // виводить значення
    }
    else cout << " Ne znaideno." << endl;
}

Це я поредагував ваші повідомлення.

15

(4 відповідей, залишених у HTML та CSS)

Кешування в webpack

Шо то за мода пішла використовувати параметри версій (URL?v=VERSION) ...
Можна ж для кожного файлу встановити заголовок ETag (MDN, google-Dev).

16

(12 відповідей, залишених у Алгоритми та структури даних, технології)

Робочий код :

#include <stdio.h>
#include <stdlib.h>

struct Field {
    int Width;
    int Height;
    char **Array;
};

void freeField(Field *const);
Field *getCopy(Field const *const);
int getAreasCount(Field const *const, char const);
void recursiveFunction(Field const *const, int const, int const);

int main(int argc, char *const *const argv) {

    // Check arguments
    if(argc < 2) {
        char const *const program_name = argc > 0 ? argv[0] : "program.exe";
        printf(" Start program with file_name parameter.");
        printf(" For example :\r\n  %s \"%s\"", program_name, "file.txt");
        return 0x0;
    }

    // Open file
    FILE *file_ptr(nullptr);
    file_ptr = fopen(argv[1], "r");
    if(!file_ptr) {
        printf(" Cannot open file \"%s\".", argv[1]);
        return 0x1;
    }

    // Read file
    Field *field = (Field *)malloc(sizeof(Field));  // C style
    // Field *field(new Field());                   // C++ style
    if(!field) {
        printf(" Memory allocation failed.");
        return 0x2;
    }
    field->Width = 0;
    field->Height = 0;
    fscanf(file_ptr, "%i %i", &field->Width, &field->Height);
    if(field->Width < 1 || field->Height < 1) {
        printf(" Invalid field size ( %i x %i ).", field->Width, field->Height);
        return 0x3;
    }
    field->Array = (char **)malloc(field->Height * sizeof(char *));  // C style
    // field->Array = new char *[field->Height];                     // C++ style
    if(!field->Array) {
        printf(" Memory allocation failed.");
        return 0x4;
    }
    for(int row_i(0); row_i < field->Height; ++row_i) {
        char *field_row(field->Array[row_i] = (char *)malloc(field->Width * sizeof(char)));  // C style
        // char *field_row(field->Array[row_i] = new char[field->Width]);                    // C++ style
        if(!field_row) {
            printf(" Memory allocation failed.");
            return 0x5;
        }
        for(int col_i(0); col_i < field->Width; ++col_i) {
            int temp(0);
            fscanf(file_ptr, "%i,", &temp);
            field_row[col_i] = temp;
        }
    }

    // Close file
    fclose(file_ptr);

    // Print field
    printf("\r\n Size ( W x H ) : ( %i x %i )\r\n\n Field :\r\n", field->Width, field->Height);
    for(int row_i(0); row_i < field->Height; ++row_i) {
        char *field_row(field->Array[row_i]);
        for(int col_i(0); col_i < field->Width; ++col_i) {
            printf(" %i", field_row[col_i]);
        }
        printf("\r\n");
    }

    // Print result
    printf("\r\n Count of areas : %i\r\n ", getAreasCount(field, 0));

    freeField(field);
    return 0x0;
}

void freeField(Field *const field) {
    if(!field) return;
    if(field->Array) {
        for(int row_i(0); row_i < field->Height; ++row_i) {
            if(field->Array[row_i]) {
                free(field->Array[row_i]);        // C style
                // delete[] field->Array[row_i];  // C++ style
            }
        }
        free(field->Array);        // C style
        // delete[] field->Array;  // C++ style
    }
    field->Width = 0;
    field->Height = 0;
    free(field);      // C style
    // delete field;  // C++ style
}

Field *getCopy(Field const *const field) {
    if(!field) return (Field *)0;
    Field *copy((Field *)malloc(sizeof(Field)));  // C style
    // Field *copy(new Field());                  // C++ style
    if(!copy) return copy;
    copy->Width = field->Width;
    copy->Height = field->Height;
    copy->Array = (char **)malloc(copy->Height * sizeof(char *));  // C style
    // copy->Array = new char *[copy->Height];                     // C++ style
    if(!copy->Array) return copy;
    for(int row_i(0); row_i < field->Height; ++row_i) {
        char *field_row(field->Array[row_i]);
        char *copy_row(copy->Array[row_i] = (char *)malloc(copy->Width * sizeof(char)));  // C style
        // char *copy_row(copy->Array[row_i] = new char[copy->Width]);                    // C++ style
        if(!copy_row) continue;
        for(int col_i(0); col_i < field->Width; ++col_i) {
            copy_row[col_i] = field_row[col_i];
        }
    }
    return copy;
}

int getAreasCount(Field const *const field, char const searchValue) {
    int count(0);
    Field *copy(getCopy(field));
    for(int row_i(0); row_i < copy->Height; ++row_i) {
        char *copy_row(copy->Array[row_i]);
        if(!copy_row) continue;
        for(int col_i(0); col_i < copy->Width; ++col_i) {
            copy_row[col_i] = copy_row[col_i] == searchValue;
        }
    }
    for(int row_i(0); row_i < copy->Height; ++row_i) {
        char *copy_row(copy->Array[row_i]);
        if(!copy_row) continue;
        for(int col_i(0); col_i < copy->Width; ++col_i) {
            if(copy_row[col_i]) {
                recursiveFunction(copy, col_i, row_i);
                ++count;
            }
        }
    }
    freeField(copy);
    return count;
}

void recursiveFunction(Field const *const field, int const x, int const y) {
    if(x < 0 || x >= field->Width) return;
    if(y < 0 || y >= field->Height) return;
    if(!field->Array[y][x]) return;
    field->Array[y][x] = 0;
    recursiveFunction(field, x + 1, y);
    recursiveFunction(field, x, y - 1);
    recursiveFunction(field, x - 1, y);
    recursiveFunction(field, x, y + 1);
}

Приклад даних у файлі :

10 10

1,0,0,0,1,1,0,0,0,1,
0,1,0,1,0,0,1,0,1,0,
0,0,1,0,0,0,0,1,0,0,
0,1,0,1,0,0,1,0,1,0,
1,0,0,0,1,1,0,0,0,1,
1,0,0,0,1,1,0,0,0,1,
0,1,0,1,0,0,1,0,1,0,
0,0,1,0,0,0,0,1,0,0,
0,1,0,1,0,0,1,0,1,0,
1,0,0,0,1,1,0,0,0,1,

Приклад виклику програми в терміналі / в командному радку :

Program.exe "InputFile.txt"

Замість "Program" має бути ім'я скомпільованого exe файлу. "InputFile.txt" - ім'я файлу, який містить вхідні дані.

Тепер є сенс перенести тему назад (в C/C++).

Переніс тему в смітник відповідно до пункту 3.5 правил форуму.

18

(616 відповідей, залишених у Інше)

FakiNyan написав:

таке питання, є у нас ось така система рівнянь

x + 2y + 3z = 100
x + y + z = 50

як знайти такі x, y, z, аби z та y були максимально можливими? (пріорітет надається z)

// Дано =============================
 x + 2y + 3z = 100    // a
 x +  y +  z =  50    // b

// Знайдемо z(x) ====================
 x + 2y + 3z = 100    // a
2x + 2y + 2z = 100    // b * 2
-x      +  z =   0    // a - (b * 2)
// ----------------------------------
z = x

// Знайдемо y(x) ====================
3x + 3y + 3z = 150    // b * 3
 x + 2y + 3z = 100    // a
2x +  y      =  50    // (b * 3) - a
// ----------------------------------
y = 50 - 2x

З останнього рівняння видно, що як мінімум один із { x, y } буде від'ємним.
Тобто для ( x >= 0 && y >= 0 ) система не має розв'язків.

koala написав:

Розв'язуємо:
z = x
y=50-2x
Пріоритет у z? Ставте якомога більший x - матимете якомога більший z

Як ви то рахуєте, я не розумію.

koala написав:

Є лінійні рівняння і умова z>=y>=x>=0. Але з рівнянь можна знайти z=x. Отже, єдиний розв'язок - це z=x=y=50/3.

Поділіться з нами, звідки ви взяли умову ( y >= x ) ?

upd: Оце я затупив. Здається треба виходити з запою.

19

(233 відповідей, залишених у Розваги та гумор)

Чомусь мої знайомі рахують то як 12 або 13 об'єктів. Дивні люди.
http://kevincarmody.com/humor/1213orig.gif
А як рахуєте ви ?

FakiNyan написав:
leofun01 написав:
FakiNyan написав:

це я до того, що нафіга та сіль треба, якщо брутфорс буде таким самим брутфорсом, просто треба буде додавати сіль

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

під як саме ви маєте на увазі сіль+пароль, чи пароль+сіль, чи все перемішане?

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