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

Завжди цікавило питання, як правильно оголошувати функцію, що повертає вказівник на саму себе (чи на іншу функцію з таким же набором параметрів і результатом).

Максимум, що зміг витиснути з C (без структур) :

#include<stdio.h>

typedef void *(*fptr_type)(int);

void *func(int n) { printf("\r\n %i", n); return func; }

int main() {
    printf("\r\n start");
    fptr_type f = (fptr_type)func;
    for(int i = 0; i < 5; ++i) {
        f = (fptr_type)f(i);
    }
    printf("\r\n ------");
    (fptr_type)((fptr_type)((fptr_type)func(0))(1))(2);
    printf("\r\n finish");
}

2

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

Чим не догодив електронний варіант ?

3

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

elektryk написав:
function func1(){
     func2(){
        echo "Спробуй мене викликати.\n";
     }
     echo "Hello world";
}

Чи можна викликати функцію func2()??

Не можна, бо немає "function" перед func2().

elektryk написав:

Якщо можна, то за яких умов.

function func1(){
     function func2(){
        echo "Спробуй мене викликати.\n";
     }
     echo "Hello world";
}
//func2(); // error: Call to undefined function func2()
func1(); // Hello world
func2(); // Спробуй мене викликати.

4

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

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

Після встановлення Windows на SSD не забудь змінити значення деяких змінних середовища ( %TEMP% , %TMP% ) ...
Шлях має бути на HDD ...

а нафіга це треба?

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

Ходить легенда, що SSD має набагато меншу кількість циклів перезапису (wiki (недоліки SSD)). Якщо для вашого диску це так, то зміна значень змінних середовища продовжить "час життя" SSD.
З тією ж метою на SSD (на його логічних дисках) не має бути файлів підкачки (pagefile.sys) і не бажано залишати файли гібернації/"глибокого сну" (hiberfil.sys).

FakiNyan написав:

І ще питання. Це мені тепер все завантажувати лише на HDD, і встановлювати теж лише на HDD окрім тих прог, котрі мені дуже треба, аби працювали швидко?

Я би приблизно так і робив, але з поправкою: якщо є можливість відділити саму програму від її даних, то відділяй, щоб програма і її незмінні компоненти були на SSD, а все що часто змінюється - на HDD. Якщо відділити не вдається, то все перенести на HDD.

+
Ще можна попереносити папки користувачів системи. Але то треба робити дуже обережно, якщо робити.

5

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

...
necroposting activated

книги :
C# 4.0
C# 4.0
Розробники вже 6.0 завершують, але що було, то кинув.

Специфікації (всі версії на сьогодні) :
C# 1.0
https://download.microsoft.com/download … 20v1.0.doc

C# 2.0
https://download.microsoft.com/download … t_2005.doc

C# 3.0
http://download.microsoft.com/download/ … cation.doc

C# 4.0
https://www.ecma-international.org/publ … ma-334.pdf

C# 5.0
https://download.microsoft.com/download … ation.docx
https://www.microsoft.com/en-us/downloa … px?id=7029

C# 6.0
https://github.com/dotnet/csharplang/bl … /README.md

6

(17 відповідей, залишених у Робота)

Протокол HTTP для цієї задачі зовсім не підходить, бо як би не були змінені поля заголовку запиту, першою стрічкою завжди буде
GET /path/... HTTP/1.1
не обов'язково "GET" і не завжди "1.1", але суть в тому, що вписати "ON" там не получитиься.

Але можна використати WebSocket. В бровзері відкрити панель розробника, вкладка консоль (якщо така є, я не знаю як там в сафарі, в мене firefox) і вставити код :

// Створити WebSocket.
var socket = new WebSocket('ws://login:pass@192.168.10.12:5000');

// Додати прослуховувача на відкриття з'єднання
socket.addEventListener('open', function (event) {
    socket.send('ON'); // команда ON
});

// Додати прослуховувача на отримання повідомлення
socket.addEventListener('message', function (event) {
    console.log('Message from server : ', event.data);
});

// в кінці закрити з'єднання
socket.close();

Повинно спрацювати.

+
Треба читати WebSocket Protocol і Living Standard.

7

(17 відповідей, залишених у Робота)

yrn написав:

Це написано мною в першому посту.

Шось я затупив.

Який бровзер використовуєте ?

8

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

Після встановлення Windows на SSD не забудь змінити значення деяких змінних середовища ( %TEMP% , %TMP% )
Панель керування => Система => Додаткові параметри системи => Додатково => Змінні середовища (внизу справа). Там будуть 2 списки змінних :
1) змінні користувача
2) змінні системи
В кожному з них потрібно знайти TEMP і TMP. І замінити їхні значення так, щоб шлях не вказував на логічний диск, який знаходиться на фізичному SSD.
Шлях має бути на HDD. І потрібно надати системі права писати і читати там. Всі (4) змінні можуть мати однакове значення.

9

(17 відповідей, залишених у Робота)

Запит з передаванням логіну і паролю має вигляд
<протокол>://[<логін>[:<пароль>]@]<ip або домен>[:<порт>]
[] - необов'язковий елемент.

Для
<чистий логін> = "login"
<чистий пароль> = "pass!@#"
<ip або домен> = "www.example.org"

потрібно спочатку конвертувати <чистий логін> і <чистий пароль> в так званий "URL encoded format".
Це можна зробити в Notepad++ :
Виділити текст => головне меню вікна => Плагіни => MIME Tools => URL Encode.
Отримаємо
<логін> = "login"
<пароль> = "pass!%40%23"

Приклад використання :
http://login:pass!%40%23@www.example.org:80
https://login:pass!%40%23@www.example.org:443
ftp://login:pass!%40%23@www.example.org:21

У вашому випадку буде щось таке :
http://login:pass@192.168.10.12:5000
але я не пам'ятаю як правильно передати команду ON. Можливо доведеться редагувати заголовок запиту.

10

(23 відповідей, залишених у Організація роботи форуму)

Chemist-i написав:

Ні, нема, це був хтось з модерів, хто саме?

Не я.
У верховного адміна мають бути логи, але чи варте воно того, щоб шукати ...

11

(3 відповідей, залишених у Web-сервери)

Можна використати WordPress'івську функцію nocache_headers. Викликається до того, як буде відправлено тіло http-відповіді :

<?php nocache_headers(); ?>

Можна використати PHP функцію header. Приклад :

<?php
    header('Cache-Control: max-age=2'); // бро може зберігати відповідь в кеші не більше ніж 2 секунди.
//  header('Cache-Control: no-cache'); // бро може зберігати відповідь в кеші, але завжди відправляє запит для перевірки.
//  header('Cache-Control: no-store'); // бро змушений кожного разу запитувати сервер замість того щоб витягати з кешу.
    // бро == бовзер
?>

Відкривайте посилання відповідно до того, що використовується:
Nginx
Apache mod_expires, mod_cache, mod_headers, mod_mime
PHP + header() (w3schools -> Example 1)

Поля в заголовках (може бути корисно) :
rfc2616 (Cache-Control)
rfc7234 (Cache-Control Directives)
rfc2616 (Expires)
rfc7232 (ETag)
rfc7231 (Vary)

12

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

Ще можна використовувати "System.Nullable<bool>", або "bool?" (це те саме), тоді змінній можна присвоювати true, false, null. Але можуть виникнути незручності з оптимізацією в деяких задачах.

System.Nullable<bool> t;
t = null;  // ok
t = false; // ok
t = true;  // ok

if(!t.HasValue)            System.Console.WriteLine("t == null.");
if(t.HasValue && !t.Value) System.Console.WriteLine("t == false.");
if(t.HasValue && t.Value)  System.Console.WriteLine("t == true.");

if(t == null)  System.Console.WriteLine("t == null.");
if(t == false) System.Console.WriteLine("t == false.");
if(t == true)  System.Console.WriteLine("t == true.");

"System.Nullable<bool>" :
+1 читабельність коду,
+1 простота використання,
+1 підтримка коду,
-2 оптимізація.

#include <iostream>
#include <string>

struct Abstract {
    virtual std::string getClassName() const = 0; // pure virtual
    void show() const
    {
        std::cout << "Abstract = " << this->getClassName() <<  '\n';
    };
};

struct a : Abstract {
    virtual std::string getClassName() const override
    {
        return "a";
    }
};

struct b : Abstract {
    virtual std::string getClassName() const override
    {
        return "b";
    }
};

int main() 
{
    a obj;
    obj.show();
    return 0;
}

14

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

/css/style.css рядки 51.. :
було:

header.page1,
/*...*/
header.page8{
    padding-bottom: 50px;
    height: 100vh;
}

попробуйте min-height без height:

header.page1,
/*...*/
header.page8{
    padding-bottom: 50px;
    min-height: 100vh;
}

15

(23 відповідей, залишених у Організація роботи форуму)

0xDADA11C7 написав:
Як я це бачу

Мені сподобалось відео, буду показувати своїм дітям перед сном. Чому youtube не дає мені подібне в розділ "Рекомендовано" ?

16

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

Хотів додати сюди візуалізацію для формули (6), але wiki мені каже "Щось пішло не так" і дає дві кнопки "Спробувати ще раз" і "Приховати". Потрачено.
Залишу тут, може в когось получиться.
http://leofun01.pp.ua/Cos_XplusT_48.gif

Код, яким була згенерована анімація

Clear[plotStyleList, addStyle, graphicsList];
plotStyleList = {
    {RGBColor[1, 0, 0], Thickness[.005]},
    {RGBColor[0, .65, 0], Thickness[.003]},
    {RGBColor[0, 0, 1], Thickness[.003]},
    {Gray, Dashed, Thickness[.002]}
};
addStyle = (Style[#, 15, FontFamily -> "Consolas"] &);
graphicsList = (Table[Labeled[Graphics[
    Plot[{
            Cos[x + t],
            Cos[x]*Cos[t],
            -Sin[x]*Sin[t],
            Cos[x + t]/2
        }, {x, -2*Pi, 2*Pi}, 
        PlotStyle -> Table[Directive @@ psItem, {psItem, plotStyleList}],
        ImageSize -> {320, Automatic}, AspectRatio -> 1/Pi,
        PlotRange -> {{-2*Pi, 2*Pi}, {-(1 + .05), 1 + .05}}, 
        Filling -> {
            2 -> {{4}, Directive[Lighter[RGBColor[.25, .9, .25], .5], Opacity[.1]]},
            3 -> {{4}, Directive[Lighter[RGBColor[.25, .25, 1], .5], Opacity[.1]]}(*,
            4->{{4}, Directive[Lighter[RGBColor[.5,.5,.5],.5], Opacity[.1]]}*)
        }]
    ],
    {
        Column[Table[Labeled[Graphics[{
                plotStyleList[[cItem[[1]], 1]],
                Rectangle[{0, 0}, {3, 1}]
            }, ImageSize -> {30, Automatic}
        ], addStyle[cItem[[2]]], {Right}],
        {
            cItem, {
                {1, "+cos(x+t)"},
                {2, "+cos(x)cos(t)"},
                {3, "-sin(x)sin(t)"}
            }
        }]],
        addStyle["x"],
        addStyle["t = " <> ToString[N[t, 4]]]
    },
    {{Bottom, Left}, Right, {Top, Left}}
    ],
    {t, 0, 2*Pi - 1/1000, 2*Pi/#}
]&);
Export["C:/Path/FileName_" <> ToString[Length[#]] <> ".gif", #] &[graphicsList[48]];

ReAl написав:
Прихований текст
http://replace.org.ua/extensions/om_images/img/5a85ebfa71e8a/cos.png

Ідею зрозумів. Попробую щось таке зробити, але не знаю чи в мене получиться.

17

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

ReAl написав:

1) А чим таке анімують?

Wolfram Mathematica

ReAl написав:

2) А чи можна ще подивитися, як вектори «дихають»?

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

18

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

Недавно встановив

\cos{(x)}=\frac{2}{n}\sum_{k=0}^{n-1}{(\cos{(a+\frac{\pi k}{n})} \cos{(x+a+\frac{\pi k}{n})})}

http://leofun01.pp.ua/Latex_CosCos_Eqtn.png
при будь-яких комплексних x, a і цілих n>1.

В споілерах візуалізації цієї формули при n=2, 3, 4, 5 і дійсних a, x.

gif n 2
http://leofun01.pp.ua/CosCos2_128.gif
gif n 3
http://leofun01.pp.ua/CosCos3_128.gif
gif n 4
http://leofun01.pp.ua/CosCos4_128.gif
gif n 5
http://leofun01.pp.ua/CosCos5_128.gif

Сірий пунктир - коливання амплітуд (можливо дивно звучить, але кращої назви не придумав).
Червоний - сума всіх інших (рухливих).

Хотів додати анімацію на wiki, але щось не вдається знайти відповідну формулу. Якщо знайдете, то киньте посилання і вкажіть точне місце.

19

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

elektryk написав:
echo <<<HTML

Після

HTML;

не можна ставити пробіли, тільки символ нового рядка.

20

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

FakiNyan написав:
body {
  height: 100vh;
  width: 100%;
}
body {
  min-height: 100vh;
  width: 100%;
}