Сохранен 586
https://2ch.hk/pr/res/456723.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
sage

C++ тред

 Аноним 29/03/15 Вск 23:04:03 #1 №456723 
14276594430050.png
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.

Предыдущий: >>448310
sageАноним 29/03/15 Вск 23:18:24 #2 №456726 
14276603040150.png
Пользуясь случаем, вбрасываю нормальную доску с тегом [code] и кодерской капчей.

https://ololoepepe.me/board/pr
https://github.com/ololoepepe/ololord

Чейнджлог с прошлого раза (оптимизация):

+ Информация о файлах (картинках) теперь хранится в базе (да, раньше в файле хранилась, потому что изначально не предусмотрел и было лень переносить посты из старой базы в новую).
+ Ссылки на посты теперь хранятся в отдельной таблице, что существенно увеличивает скорость их добавления и особенно удаления (раньше при удалении приходилось читать и записывать каждый пост).
+ Добавил поле "userData" в таблицу "posts" - дополнительные данные для нестандартных досок. Раньше приходилось извращаться с запихиванием, например, в поле "subject", то есть жутчайший говнокод.
+ Проверка капчи и все операции с файлами (сохранение и создание превью) теперь происходят до начала транзакции БД, чтобы не вызывать длительной блокировки.
+ Удаление файлов происходит после завершения транзакции, что, как и в предыдущем пункте, снижает длительность блокировки, а также не приводит к преждевременному удалению файлов, если вдруг транзакция откатится.
+ Файлы превью при откате транзакции теперь также удаляются (раньше не удалялись).

Прочие мелочи:

+ Для файлов без расширения оно автоматически выбирается на основе MIME-типа и добавляется к имени.
+ Теперь отображается дата и время последнего редактирования поста. К черновикам не относится (пока пост в статусе черновика, его можно сколько угодно редактировать, эта шняга не появится). Сделано, по сути, для того, чтобы показывать, когда мочератор/админ злоупотребляет полномочиями, чтобы без повода все подряд не редактировал.
+ Забаненные IP, а также IP, запросы с которых не логгируются, теперь задаются в виде диапазона (192.168.0.1-192.168.0.255), а не wildcard'ом, как раньше.
+ Исправлено отображение трипкода (а то он даже при включенной галочке не отображался, может это и к лучшему было, лол).

И еще (хоть к движку это и не относится): отключил форму поиска, а то, говорят, у некоторых страница не отображалась, пока эта сраная форма не прогрузится (что странно, ведь у меня то отображалась).
Аноним 29/03/15 Вск 23:50:04 #3 №456736 
14276622047250.jpg
>>456723
Что нужно изучить, чтобы начать работать программистом на плюсах?

Я так понимаю, изучить книжку "Лекции и упражнения", автор Прата, потом изучить STL, потом изучить фреймворк Qt. Правильный алгоритм действий?
sageАноним 30/03/15 Пнд 00:02:59 #4 №456739 
>>456736
В целом да, еще неплохо бы изучить предметную область. Ну и как правило Qt и STL вместе не используются. Еще boost посмотри. Все зависит от конкретной конторы и конкрртной задачи.
Аноним 30/03/15 Пнд 01:04:39 #5 №456759 
>>456726
Пиздос там капча.

Определить високосный год или нет. Я хз, как это будет на с/с++. Погуглил стандартные функции работты со временем и вляпался в какие-то указатели из буста и прочих извращей.
Крч, идите нахуй, русафобы.


sageАноним 30/03/15 Пнд 01:12:35 #6 №456761 
>>456759
god % 400 == 0 || god % 4 == 0 && god % 100 != 0
няша
Аноним 30/03/15 Пнд 01:35:38 #7 №456768 
>>456761
Я что такое подозревал, но хотел прост в одну строчку узнать кол-во дней в году, если 366, то високосный.
Спасибо.
sageАноним 30/03/15 Пнд 08:04:16 #8 №456814 DELETED
>>456759
Зато кикаких студентов-дегенератов с их даунскими вопросами не будет, потому что не осилят такую капчу. Охуенно же.
Аноним 31/03/15 Втр 12:58:23 #9 №456830 
>>456829
v dushe niibu
Аноним 30/03/15 Пнд 10:25:12 #10 №456852 DELETED
>>456723
няши, помогите пожалуйста, неправильно работает код, мне нужно вставить после первого слова чётной длины заданную подстроку, то есть "", то есть остальные слова должны просто сместиться, а у меня почему-то если после первого чётного слова слова идут нечётной длины, они вообще не выводятся. Помогите пожалуйста))
Аноним 30/03/15 Пнд 10:25:50 #11 №456854 DELETED
>>456852
// сколько слов в строке чётной длины.
//Вставить заданную подстроку, например ””, после первого такого слова
#include <iostream> // Для cout
using namespace std;
#include <string.h> // Для strcpy_s(), strtok_s(), // strlen()

void main()
{
char str[300]; // Исходная строка
char str2[350] = ""; // Полученная строка
char razd[] = " \t\n"; //Символы-зазделители (если нужны еще знаки пунктиации - то
// char razd[] = " \t\n.,!?";
char token= NULL; // Очередное слово
char
next_token = NULL; // Слово, за очерезным
int len; // длина текущего слова
fgets(str, 300, stdin); // читаем строку с клавы
// Разбивка str на слова
token = strtok_s(str, razd, &next_token); // Получение первого слова из str
bool flag = true; // true - первое слово четной длины
int count = 0; // кол. слов четной длины
while (token != NULL) // Получено очередное слово
{
len = strlen(token);
// Печать текущего слова и его длины (для наглядности)
cout<< token<< " len= " << len <<endl;

if (len % 2 == 0) // слово четной длины
{
count++;
strcat_s(str2, token); // копируем его в результат
strcat_s(str2, " ");
if (flag) // если это первое слово четной длины
{
strcat_s(str2, "
"); // добавляем
flag = false;
}
}
// Получение следующего слова из str
token = strtok_s(NULL, razd, &next_token);
}
cout << "Result ========================" << endl;
cout << "count = " << count << endl; // печать кол. слов
cout << str2 << endl; // печать полученной строки
system("pause");
}
Аноним 30/03/15 Пнд 12:15:07 #12 №456921 DELETED
Очень добрый тред ))) Отвечу в тонущий тред.

>>456603
>>456613
Ну хорошо. Вот беру я квадратный корень из дабла, велосипедная функция, возвращающая дабл. Сначала действительно проверяю, неотрицательный ли аргумент. Если нет, кидаю исключение. А вы ЧТО БУДЕТЕ ДЕЛАТЬ?
sageАноним 30/03/15 Пнд 12:23:11 #13 №456925 DELETED
>>456921
Не буду как долбоеб спрашивать на сосаче, а посмотрю, что делает стандартная функция sqrt, и верну NaN.
Аноним 30/03/15 Пнд 12:28:15 #14 №456928 DELETED
>>456925
Хорошо, давай брать не корень, а квадрат. Что в случае переполнения делать?
sageАноним 30/03/15 Пнд 12:29:06 #15 №456929 DELETED
>>456852
>>456854
http://pastebin.com/f8V8y1tv
sageАноним 30/03/15 Пнд 12:30:41 #16 №456930 DELETED
>>456928
Не быть долбоебом, не спрашивать на сосаче, а посмотреть, что делает стандартная функция std::pow, и вернуть Inf.
Аноним 30/03/15 Пнд 12:32:43 #17 №456933 DELETED
>>456930
Хуинф. Я забыл упомянуть, что пусть аргумент типа int, и возвращает тип int.
Аноним 31/03/15 Втр 17:06:42 #18 №456939 
>>456937
теперь всё работает, оказывается мне виртуалбокс своё время пихал насильно, пришлось придушить
Аноним 30/03/15 Пнд 12:39:17 #19 №456940 DELETED
>>456939
Что хочу, то и делаю. Надо мне int. C++ же.
sageАноним 30/03/15 Пнд 12:40:53 #20 №456941 DELETED
На всякий случай переведу, а то щас же в школах не учат инглишу:
>For any fixed-width integral type, nearly all of the possible input pairs overflow the type, anyway. What's the use of standardizing a function that doesn't give a useful result for vast majority of its possible inputs?
>Для любого целого типа фиксированной размера почти все возможные пары аргументов [функции pow] приведут к переполнению типа. Нахуй нужна функция, которая не дает полезного результата для подавляющего большинства возможных входных параметров?
sageАноним 30/03/15 Пнд 12:41:45 #21 №456942 DELETED
>>456940
А мне надо поделить на 0, например. И я не хочу при этом выкидывать исключение, хочу поделить на ноль и получить результат. C++ же. Уебывай уже на хуй, клоун.
Аноним 30/03/15 Пнд 12:43:24 #22 №456943 DELETED
>>456941
Ты мне в дети годишься, если что. Если ты тот же сажист, что и обычно в плюсотредах. Английский в переводе не нуждается.

Короче, что я хочу сказать: если у меня есть ситуация, в которой я не собираюсь возвращать результат. И собираюсь бросить исключение. Ия это сделаю. И не вижу в этом ничего плохого.
sageАноним 30/03/15 Пнд 12:47:17 #23 №456944 DELETED
>>456943
Ты мой хуй пососать годишься. На сосаче он будет возрастом хвастаться, охуеть вообще. Видать твоя жопа уже кинула исключение, и не нашлось обработчика.
Делай что хочешь, тебе никто не запрещает, только не неси сюда свое говно и даунские bad-practices.
Аноним 30/03/15 Пнд 13:03:45 #24 №456949 DELETED
>>456940
минус один возвращай, как лалка.
Аноним 30/03/15 Пнд 13:35:19 #25 №456960 DELETED
>>456944
Пиздец, умные люди проектировали, книги писали на тыщи страниц Exceptional C++, а тут анон сказал, что исключения не нужны. Катись к хуям, быдло.
sageАноним 30/03/15 Пнд 13:40:56 #26 №456964 DELETED
>>456960
Нет, ты. Не менее умные люди пишут фреймворки типа Qt, в которых исключения не используются вообще. И, в отличие от кукаретиков-писателей, эти люди делают что-то реальное, а не выдрачивают давно устаревшую теорию за тарелкой борща.
sageАноним 30/03/15 Пнд 13:43:20 #27 №456968 DELETED
И да, хуило великовозрастное, ты мои слова то не перевирай, никто тут не говорил, что исключения не нужны вообще. Я даже писал, где они нужны. Но тебе же лишь бы еблом пощелкать.
Аноним 30/03/15 Пнд 14:12:11 #28 №456981 DELETED
>>456968
Давай короче говори, где они нужны. Тред по счёту четвёртый или пятый, там заебёшься искать.
Аноним 30/03/15 Пнд 14:26:55 #29 №456985 DELETED
>>456929
Но я не знаю структуры, исправь пожалуйста мой код))
Аноним 30/03/15 Пнд 14:35:09 #30 №456987 DELETED
>>456960
Исключения - зло. Они медлительны, раскручивают стек и вообще приводят к непредсказуемым последствиям.

Посмотри на прекрасный пример обработки ошибок - WinAPI. Коды HRESULT быстрые, макросы для них понятные, система определяет подробное описание всех кодов и они очень удобны в обработке. А исключения громоздки, медлительны и неудобны.
sageАноним 30/03/15 Пнд 14:35:18 #31 №456988 DELETED
>>456985
Не буду. Иди на хуй.
sageАноним 30/03/15 Пнд 14:40:35 #32 №456990 DELETED
>>456981
В предыдущем было же, почти в самом конце: https://2ch.hk/pr/res/448310.html#456499
>это дрисня носорога для ебанутых тырпрайзщиков с миллионами строк бойлерплейта, в котором даже автор не разберется, потому что ему похуй на свою программу, лишь бы денег срубить, а думает пусть кто-то другой (в итоге не думает никто, все только и делают, что кидают и ловят исключения).
Это, разумеется, эмоционально окрашенный вариант, а суть такая, что исключения нужны, когда код огромен, когда над ним работает много людей, кто-то уходит, кто-то приходит, мало кто представляет, как работают отдельные части кода, а весь проект целиком и вовсе знает никто. Здесь да, без исключений никак. Но в функции вычисления квадратного корня они совершенно ни к чему, равно как и в курсачах на три тыщи строк, которые можно с закрытыми глазами на бумажке написать и не ошибиться.
sageАноним 30/03/15 Пнд 14:41:36 #33 №456991 DELETED
>>456990
>и вовсе не знает никто
фикс
Аноним 30/03/15 Пнд 20:14:33 #34 №457118 DELETED
Микроптимизации вопрос.

Допустим, имеется заведомо положительное число int x; (я про заведомую положительность знаю из другой функции, компилятор будем считать не в курсе) требуется найти его остаток от деления на положительное число unsigned int y;

Можно ли утверждать, что

while (x >= y) x -= y;

отработает не хуже

x %= y;

?
sageАноним 30/03/15 Пнд 20:50:00 #35 №457136 DELETED
>>457118
Посмотри что конпелятор выводит. Опции для своего конпелятора найдешь в гугле. А вообще, вероятнее всего он и без тебя все соптимизирует.
Аноним 30/03/15 Пнд 22:41:24 #36 №457199 DELETED
нахуя префикс m_ у членов?
Аноним 30/03/15 Пнд 22:48:25 #37 №457204 DELETED
>>457199
Чтобы отличать члены класса от всего остального говна по имени.
Аноним 30/03/15 Пнд 22:48:44 #38 №457205 DELETED
>>456723
помогите пожалуйста, почему у меня компилятор пишет что в функции нет двух аргументов, когда они есть?
Аноним 30/03/15 Пнд 22:52:07 #39 №457209 DELETED
>>457204
и так же ясно внутри класса где член класса
человек же может в контекст
классы в разных файлах лежат
еще в джаве в андроидных туториалах такое видел.
а еще какие-нибудь причины есть?
Аноним 30/03/15 Пнд 22:53:21 #40 №457211 DELETED
>>457205
Потому что strcat_s принимает 3 параметра.
https://msdn.microsoft.com/en-us/library/d45bbxx4.aspx
Аноним 30/03/15 Пнд 22:54:40 #41 №457213 DELETED
Потому что в этой функции 3 аргумента, сосни msdn
Аноним 30/03/15 Пнд 22:54:59 #42 №457214 DELETED
>>457209
> а еще какие-нибудь причины есть?
Других не знаю.

> человек же может в контекст
Всё зависит от конкретных договорённостей среди группы разработчиков или вкусов отдельного быдлокодера.
Аноним 30/03/15 Пнд 22:55:21 #43 №457217 DELETED
>>457214
ну ок, спасибо
Аноним 30/03/15 Пнд 22:55:57 #44 №457219 DELETED
>>457211
подскажи пожалуйста, что написать третьим параметром))
Аноним 30/03/15 Пнд 22:59:26 #45 №457224 DELETED
>>457219
Пиздуй аглицкий учить.

Параметры:

strDestination – тull-terminated destination string buffer.
numberOfElements – size of the destination string buffer.
strSource 2 Null-terminated source string buffer.
Аноним 30/03/15 Пнд 23:04:14 #46 №457230 DELETED
>>457224
то есть мне надо вторым параметром написать размер моей строки str2?
плохо разбираюсь в продукции MS 30/03/15 Пнд 23:05:03 #47 №457231 DELETED
>>457219
strcat_s( char strDestination, size_t numberOfElements, const char strSource );
Аноним 30/03/15 Пнд 23:06:53 #48 №457233 DELETED
>>457230
Именно так.
Аноним 30/03/15 Пнд 23:08:46 #49 №457235 DELETED
>>457233
а если у меня динамическая строка, которая определена таким образом:
char *str2 = new char[], то что мне вторым аргументом писать?
Аноним 30/03/15 Пнд 23:11:20 #50 №457237 DELETED
>>457235
Ты же хранишь где-нибудь длину str2?
Вообще можешь попробовать strlen(str2).
strlen – даст длину строки.
Аноним 01/04/15 Срд 12:10:45 #51 №457241 
>>457175
Тогда только прямая работа с виртуальной памятью, только это троллейбус из буханки. Проще сделать что-то вроде deque - выделять память крупными кусками, хранить их список в векторе, и поверх этого приделать индексацию.
sageАноним 30/03/15 Пнд 23:18:18 #52 №457245 DELETED
>>457235
>new char[]
Обоссал спермодебила с мелкомягкий нестандартным высером.
sageАноним 30/03/15 Пнд 23:18:49 #53 №457246 DELETED
>>457245
>мелкомягким
фикс
Аноним 30/03/15 Пнд 23:18:54 #54 №457247 DELETED
>>457241
Тогда всему пизда, ничего не сработает. Скинь уже код на https://ideone.com/ чего людей мучаешь?
Аноним 30/03/15 Пнд 23:19:44 #55 №457249 DELETED
>>457205
аутист, ты уже ~150 постов срешь со своим количеством четных слов в предложении? Или это другой и у вас какая-то школьная олимпиада проходит?
Аноним 30/03/15 Пнд 23:19:46 #56 №457250 DELETED
>>457245
а что не так собственно?
‮минонА 30/03/15 Пнд 23:20:15 #57 №457251 DELETED
>>457235>>457241
> char *str2 = new char[]
> я никак не инициализирую этот массив
Ну это конечно круто, но по хорошему ты должен указывать число элементов в char[]. Его можно считать из расчета - необходимая длина строки + 1 (для \0).

Иначе много строковых функций наебнутся, ища конец строки в необнулённой памяти.

Алсо, с таким подходом используй std::string, а то у тебя совсем охуительные истории получаются.
Аноним 30/03/15 Пнд 23:21:30 #58 №457252 DELETED
>>457251
мы ещё не проходили std::string((
Аноним 30/03/15 Пнд 23:22:39 #59 №457253 DELETED
>>457252
улыбнулся
sageАноним 30/03/15 Пнд 23:24:02 #60 №457254 DELETED
>>457250
Все так, не отвлекайся, глотай.
Аноним 30/03/15 Пнд 23:24:05 #61 №457255 DELETED
>>457252
Лучше бы вы new не проходили и по старинке malloc'ами пользовались, честно.
Аноним 30/03/15 Пнд 23:24:35 #62 №457256 DELETED
>>457252
> мы ещё не проходили
Ну ты и тупой. С таким подходом мог бы вообще забить на всё. Изучай самостоятельно, блджад, хуева тьма книг/туториалов для кого написана?
Аноним 30/03/15 Пнд 23:31:56 #63 №457261 DELETED
>>456723
помогите пожалуйста. привыполнении программы выдаёт такую ошибку, как исправить?
sageАноним 30/03/15 Пнд 23:32:36 #64 №457263 DELETED
Не отвечайте дегенератам-ПТУшникам. Просто ссыте им в гнилой хлебальник, все равно из них ничего хорошего не выйдет с таким подходом к жизни.
sageАноним 30/03/15 Пнд 23:33:42 #65 №457265 DELETED
>>457261
Холодильник засорился. Нужно срочно прочистить драйвер, пока синий экран не замкнул кулер.
Аноним 30/03/15 Пнд 23:34:45 #66 №457266 DELETED
>>457265
в смысле?
Аноним 30/03/15 Пнд 23:37:28 #67 №457269 DELETED
>>457261
Твоя ошибка написана прямым текстом в пятой строчке. Тебе уже говорили по \0 и неправильно выделенную память. Учитывая, что это я тут один такой добрый и я уебываю спать, гугли сам "строки в си".
Аноним 30/03/15 Пнд 23:37:38 #68 №457270 DELETED
>>457256
Да зачем не это))) Я не такой человек))) Вот на курсы запишусь - там хоть заставлять будут)))
Аноним 30/03/15 Пнд 23:39:56 #69 №457272 DELETED
>>457270
Эй, не надо за меня отвечать, я не использую функции и то, что мы ещё не проходили в универе не потому что мне лень что-то там учить, а потому что преподша требует делать задачи только с помощью того, что мы уже прошли с ней
Аноним 30/03/15 Пнд 23:40:42 #70 №457273 DELETED
>>457272
бля пиздец
Аноним 30/03/15 Пнд 23:53:36 #71 №457279 DELETED
Частенько бывает так, что пишу код и не совсем понимаю, что происходит. Решил это исправлять. Начал с указателей и ссылок. И моментально обосрался.

Итак, поясняем дегенерату за разницу ссылок и указателей.

Как я понимаю эту концепцию.
1. Указатель - это переменная, которая хранит адрес памяти. То есть пишем int i и считаем, что переменная i есть указатель на int.
Какие действия можно производить с указателями:

A. Объявление. Можно объвить указатель int
i; Только я не могу понять, что значить указывать на тип int.

B. Инициализация. Можно присовить указателю адресс какой-нибудь переменной.
int ptr;
int a = 3;
ptr = &a;

C. Разыменование. Получение
значения по адрессу, на которую ссылается указатель.
int
ptr; //ptr ссылается на int.
int a=3;
ptr = &a; //помещаем адресс переменной в ptr
std::cout << *ptr; //производим разыменовывание и получаем значение по адерссу.

Теперь ссылки.
Ссылка — это указатель, с которым можно работать, как с обычной переменной. Ссылка не может быть равна NULL. Указатель может. Ссылка не может быть непроинициализирована. Указатель может.

Хуесосьте и поясняйте, где я долбоеб.


===============
Теперь за код. Я где-то отрыл кусок библиотеки и пытаюсь его проанализировать - http://pastebin.com/3ht8y7eu
Но некторые строки меня смущают. Я одно время был веб-макакой, но одумался. Поэтому учебники не очень подробно читают - пытаюсь практиковаться сразу. Некоторые вещи, которые, наверное, освещаны в учебниках, я мог пропустить, а как загуглить иногда не знаю. Не обессудьте в общем.

13 Line: QSMatrix(unsigned _rows, unsigned _cols, const T& _initial);
Это мы в конструктор передаем три переменных: _rows, _cols и переменную типа T _initial (Много типов можно int, double); Только я не могу понять - почему перед переменной const.

41 Line: const T& operator()(const unsigned& row, const unsigned& col) const;
Что значит const в конце? Я читал пару исходников и встречал там подобное объявление.

Остальное потом поспрашиваю, сейчас, пока катал пасту, некоторые вещи прояснились.





Аноним 30/03/15 Пнд 23:56:59 #72 №457280 DELETED
>>457279
Олсо, вот этот ваш ассемблер. Как его вообще продуктивно изучать? У меня просто в жопе дикая боль от того, что я не понимаю, как некоторые вещи работатют, а на честное слово учбеникам как-то не взлетает доверять. Надо типа ручками попробовать.

Может есть какой эмулятор? Я видел как-то раз совет, что можно ассемблер изучать методом крэкинга софта. Видел одну невъебенно огромную статью, в которой этим заниались.
Аноним 30/03/15 Пнд 23:57:33 #73 №457281 DELETED
>>457279
> указывать на тип
Не на тип, а на переменную типа int.

> почему перед переменной const
http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/

> Что значит const в конце?
Что метод не меняет состояние объекта, т.е. поля класса не меняются, но тут тоже есть свои заковырки со всякими mutable.
Аноним 31/03/15 Втр 00:01:29 #74 №457282 DELETED
>>457281
>Что метод не меняет состояние объекта, т.е. поля класса не меняются, но тут тоже есть свои заковырки со всякими mutable.
Да что ж блядь все так сложно-то.
Так-с, значит если этот метод попытается изменить состояние класа, то компилятор выдаст ошибку? Или что? Какое предназначение этой штуки?

>но тут тоже есть свои заковырки со всякими mutable
Не буду пока вскрывать эту тему, да.
Аноним 01/04/15 Срд 14:11:25 #75 №457285 
Анон, у меня есть метод print(const std::string&) для вывода инфы в консоль. Как можно понять, работает он только со строками. Как мне сделать так, чтобы он принимал еще и разные числа и bool? Перегружать для каждого типа отдельно? Но это будет проблематично, потому что у меня довольно много таких функций типа messageBox, fatal, assert(bool, const std::string&) и я заебусь каждую перегружать.
Аноним 31/03/15 Втр 00:09:59 #76 №457287 DELETED
>>457273
Вообще, разумно. При обучении человек должен решать задачу определёнными средствами,в этом и есть смысл обучения. Уже в работе челвоек выбирает средство.
Аноним 31/03/15 Втр 00:10:04 #77 №457288 DELETED
>>457282
> Да что ж блядь все так сложно-то.
> Так-с, значит если этот метод попытается изменить состояние класа, то компилятор выдаст ошибку? Или что?
Именно так.
Аноним 31/03/15 Втр 00:11:12 #78 №457289 DELETED
>>457288
А причем тут мутекс этот?
Аноним 31/03/15 Втр 00:13:13 #79 №457293 DELETED
>>457287
мне не кажется это разумным
и я забил на эту херню в 9м классе
в универе не было такого, чтобы заставляли
Аноним 31/03/15 Втр 00:31:15 #80 №457299 DELETED
>>457289
Какой ещё мутекс?

>>457282
> Какое предназначение этой штуки?
Гарантировать неизменность данных. Передавая объект по константной ссылке в какую-нибудь функцию, ты можешь вызывать только методы объекта с модификатором const.
sageАноним 31/03/15 Втр 00:39:12 #81 №457307 DELETED
>>457287
интересный подход, прокатил у меня в точных науках, но не в программировании

вообще, оглядываясь назад, программирование лучше начинать с осмотра проблем, которые сложно делать человеку, но легко машине и со всевозможных способов организации данных, попутно делая это на каком-нибудь простом языке вроде pascal.
мимо-начинал-со-страуструпа-и-кидал-молотки-в-стены-от-непонимания
Аноним 31/03/15 Втр 00:46:37 #82 №457314 DELETED
>>457289
mutable
http://en.cppreference.com/w/cpp/language/cv
Аноним 31/03/15 Втр 00:50:38 #83 №457317 DELETED
>>457307
>паскаль
>понятный
Да ты же упоротый. Это кухонная раковина наподобие PL/1 (с которого, собственно, и был слизан этот блевотный многословный синтаксис с его var, begin/end и прочей хуитой).
sageАноним 31/03/15 Втр 01:46:31 #84 №457344 DELETED
>>457317
а теперь назови язык, который можно выучить полностью, исключая lua
Аноним 31/03/15 Втр 10:32:29 #85 №456782 
>>456768

bool leapyear(const int y)
{
if (y % 4 != 0) return false;
if (y % 100 != 0 || y % 400 == 0) return true;
return false;
}

Может, быдлокод, зато более читаемо однострочник.
Аноним 31/03/15 Втр 10:37:06 #86 №456787 
>>456782
или так (что одно и то же):

bool leapyear(const int y)
{
if (y % 4 != 0) return false;
return y % 100 != 0 || y % 400 == 0;
}

Хотя уже менее читаемо.
Аноним 31/03/15 Втр 10:47:59 #87 №456790 
>>456723
Охуительный тред.
Аноним 31/03/15 Втр 11:58:33 #88 №456809 
Господа, объясните мне:

http://ideone.com/lfA317

Почему 9, а не -7? Да, я специально спрашиваю именно про int % unsigned int.
Аноним 31/03/15 Втр 12:41:24 #89 №456821 
>>456809
И эти вот люди потом рассказывают, что Javascript ебанутый язык. Ну-ну…
Аноним 31/03/15 Втр 12:52:29 #90 №456826 
>>456809
http://ideone.com/8GKL71
Аноним 31/03/15 Втр 12:52:50 #91 №456828 
>>456821
Где там эта картинка с розовым фоном с подписями в духе "потому что мы любим обратную совместимость"?
Аноним 31/03/15 Втр 12:55:04 #92 №456829 
>>456826
Почему к ансигнеду приводит, когда первый операнд -- как-раз-таки инт?
Аноним 31/03/15 Втр 13:01:18 #93 №456833 
>>456830
Ну просто если рассуждать по аналогии:

int a, b;
double ddd;
//double d = a/b ddd; //a/b information loss
double d = ddd
a/b; //OK

Всё приводится к даблу. Почему a % b не приводит к типу a?
Аноним 31/03/15 Втр 13:02:22 #94 №456834 
>>456833
Вместо @ умножение.

int a, b;
double ddd;
//double d = a/b @ ddd; //a/b information loss
double d = ddd @ a/b; //OK
Аноним 31/03/15 Втр 13:17:55 #95 №456837 
>>456833
http://www.learncpp.com/cpp-tutorial/44-type-conversion-and-casting/
короче ансигнед имеет более высокий приоритет
Аноним 31/03/15 Втр 15:02:31 #96 №456870 
Быдлокодер под МК, учился на электронщика поэтому особо в программировании то и не шарю. Все учил сам методом проб и ошибок. Вообщем то проекты пишу, вроде бы даже придрочился и все хорошо работает. Так вот что почитать по С++ эмбедеру, что бы вырасти в профессиональном плане?
Аноним 31/03/15 Втр 15:28:07 #97 №456884 
Почему mktime может крашить программу? Такого поведения у него ведь не должно быть вообще?
Структуру пробовал мемсетом инициировать в 0, выносил из локального скоупа, не помогает.
sageАноним 31/03/15 Втр 15:35:36 #98 №456887 
>>456884
http://www.cplusplus.com/reference/ctime/mktime/
Аноним 31/03/15 Втр 15:39:20 #99 №456889 
>>456887
И что? Я референс читал, не вижу ошибок.
Вот кусок кода с мэйктаймом, всё до него выполняется нормально
https://ideone.com/AW67CO
Аноним 31/03/15 Втр 16:34:59 #100 №456916 
>>456884
>>456887
>>456889
перепроверил, mktime выполняется нормально, а вот stime почему-то не работает
Аноним 31/03/15 Втр 16:49:27 #101 №456923 
>>456916
stime работает, но что-то тут нечисто
sageАноним 31/03/15 Втр 17:04:28 #102 №456937 
>работает
>не работает
>работает
>не работает
Так работает или нет? Ты уж определись.
Аноним 31/03/15 Втр 20:50:07 #103 №457060 
>>456736
>Лекции и упражнения", автор Прата
В этой книги есть какие-нибудь интересные примеры? У меня просто дико жопу рвет сейчас. Я, вроде бы, знаю основы языка, но сука, не могу их нормально использовать в проектах.

Пилю проект. Взял boost. Просто охуеваю от непонятности некоторых частей. Половина кода копипастой, ибо поставил себе определенный дедлайн.

Дико печет, что, вроде бы, знаю, но на деле нихуя не знаю. Хули делать, я уже волосы их жопы выдергивать начинаю.
Аноним 31/03/15 Втр 20:51:51 #104 №457061 
>>456870
Я читаю методички, которые отжал у знакомых, например. Тоже электронщик.
Аноним 31/03/15 Втр 21:19:28 #105 №457073 
>>457060
>Я, вроде бы, знаю основы языка, но сука, не могу их нормально использовать в проектах.
Потому что надо начинать с джавы. Там целый день сидишь, капчу двачуешь, а у тебя пяток классов написано на пустом месте.
Аноним 31/03/15 Втр 21:24:22 #106 №457078 
>>457073
Но я хочу быть охуенным. Java не так охуенно, как кресты.
Аноним 01/04/15 Срд 00:25:53 #107 №457145 
Считается ли зашкваром писать на java, активно используя C++ через JNI?
долбоёб
sageАноним 01/04/15 Срд 00:27:37 #108 №457146 
Псссс. Перед сном окропляю долбоебов уриной.
Аноним 01/04/15 Срд 00:41:21 #109 №457152 
> 2015
> лайки в /b
> до сих пор не починили [code]
Аноним 01/04/15 Срд 00:51:11 #110 №457153 
>>457145
Если ты под андроид пишешь что-то графически тяжелое.
Аноним 01/04/15 Срд 01:40:48 #111 №457164 
>>457061
а че за методички?
Аноним 01/04/15 Срд 02:56:01 #112 №457171 
Ананас, есть ли возможность после инициализации увеличивать размер зарезервированной памяти поинтеру на тип данных?
Например, чтоб дописывать чары в строку, заданную поинтером на чар.
Аноним 01/04/15 Срд 03:28:15 #113 №457173 
>>457171
realloc, но он ничего не гарантирует. Чем тебя вектор не устраивает?
Аноним 01/04/15 Срд 03:47:17 #114 №457175 
>>457173
Мало анальных извращений. Хочу самописный класс-контейнер "текст", который работает по принципу адресной арифметики и может дополняться на ходу, поэтому, естественно, просто адресная арифметика мне не подходит.
Аноним 01/04/15 Срд 07:04:12 #115 №457181 
>>457175
std::allocator
https://howardhinnant.github.io/stack_alloc.html
https://github.com/jherico/OculusSDK/blob/master/LibOVRKernel/Src/Kernel/OVR_Allocator.h
Аноним 01/04/15 Срд 14:28:45 #116 №457292 
>>457285
to_string
Аноним 01/04/15 Срд 14:39:17 #117 №457294 
>>457292
Ну я бы хотел, чтобы использовать их было как можно проще, т.е. без всяких конверсий в вызове. Может там синтаксис какой есть. Но, так понимаю, без перегрузки такого сделать не получится, поэтому перегрузить каждую функцию и вызвать из нее оригинальную с to_string кажется уже не такой плохой идеей.
sageАноним 01/04/15 Срд 15:22:02 #118 №457312 
>>457294
Либо to_string, либо перегрузка. Больше никак. Можно еще, конечно, сделать одну перегруженную функцию, void universal(std::string s, Action a); где enum Action { Print, MsgBox, Fatal, Assert }; и внутри вызывать to_string и нужную функцию, но это тупо. Типа такого:
if (!cool) universal(100500, Fatal);
else universal(9000.1, MsgBox);
Но это, повторюсь, тупо и костыльно.
Аноним 01/04/15 Срд 15:48:14 #119 №457335 
Товарищ капитан, разрешите [strike]войти[/strike] вопрос по std::basic_ostream::write

#include <cstdint>
#include <cstdlib>
std::basic_ofstream<uint8_t> ost(filename, std::ios::binary);

Хочу записать в filename файл n штук байтов, состоящих из нулей. unsigned int n на этапе компиляции неизвестно. Как это сделать без создания массива

uint8_t@ n_zeros = (uint8_t@)std::calloc(n);
ost.write(n_zeros, n);

А сразу через ost.write() напрямую нули в файл писать? Или через какой-то другой метод?
Аноним 01/04/15 Срд 16:44:54 #120 №457357 
>>457335
Ну блядь, либо обоссыте, либо скажите, что многого хочу.
Аноним 01/04/15 Срд 16:53:49 #121 №457363 
>>457294
Напиши темплейтную функцию:

template<class T>
void log( const T& item ) {
print( to_string( item ) );
}

template<>
void log<std::string>( const std::string& item ) {
print( item );
}
Аноним 01/04/15 Срд 16:55:47 #122 №457364 
>>457335
operator<<, ты знаешь о нем? Откуда вы лезете, блджад?
Аноним 01/04/15 Срд 17:12:17 #123 №457369 
>>457364
>binary
сам куда лезешь, быдло

>>457363
Ничё не понял. Стринг ещё какой-то, он-то тут при чём?
Аноним 01/04/15 Срд 18:04:02 #124 №457388 
>>457369
>binary
Ты тупой совсем? of << 'a' это тоже самое, что char a='a'; of.write( &a, 1 );
>Стринг ещё какой-то, он-то тут при чём?
При том, что to_string<string> не определен
>Ничё не понял
Ты ведь в ПТУ учишься, я угадал?
Аноним 01/04/15 Срд 18:08:57 #125 №457389 
>>457388
Какой нахер оператор << для бинарной записи? Очнись, ты на лекции.
Аноним 01/04/15 Срд 18:13:55 #126 №457392 
>>457389
Ебать, и правда ПТУ.
Аноним 01/04/15 Срд 18:21:48 #127 №457395 
>>457392
Use google.

>When we move from character-oriented I/O to binary I/O, we give up our usual >> and << operators.
Аноним 01/04/15 Срд 18:47:56 #128 №457408 
>>457395
Стандарт лучше читай, а не Страуса
http://stackoverflow.com/questions/1278259/c-fstream-and-operators-with-binary-data
Аноним 01/04/15 Срд 19:00:30 #129 №457417 
>>457408
Сука, чтоб он в аду горел. Зачем он так написал тогда?
Аноним 01/04/15 Срд 19:11:55 #130 №457422 
>>457417
Скопипастил со старого издания, и не посмотрел, что стандарт поменялся. Был пару месяцев назад тред, где анон бугуртил с ошибок в его книгах.
Аноним 01/04/15 Срд 21:11:03 #131 №457457 
http://pastebin.com/vVQEGzFG
как сделать выборочное закрытие процессов
при нажатии на 4 закрывается calc.exe, 5 - mspaint.exe и тд
Аноним 01/04/15 Срд 21:49:55 #132 №457473 
>>457457
Какил, зачем тебе закрывать процессы? Иди бомбас освобождай.
Аноним 01/04/15 Срд 21:50:32 #133 №457474 
>>457457
Кэйс для 4 и 5 добавить что ли?
Аноним 01/04/15 Срд 21:51:24 #134 №457475 
>>457474
Слишком сложно жы.
Кстати, там не плюсы, а кондовый си с винапи.
Аноним 01/04/15 Срд 21:51:43 #135 №457476 
>>457473
в /po/ или /nvr/ pls
Аноним 01/04/15 Срд 21:53:04 #136 №457479 
>>457474
http://pastebin.com/wA2XJjW9'
я то сделал так но это явно не решение проблемы.
Аноним 01/04/15 Срд 21:56:26 #137 №457483 
>>457476
С демонстративными каментами на русско-польском диалекте - туда же.
Аноним 01/04/15 Срд 21:59:39 #138 №457484 
>>457483
ну извини, препод требует комменты на хохольском
Аноним 01/04/15 Срд 22:03:53 #139 №457485 
>>457479
>A handle to the job whose processes will be >terminated. The CreateJobObject or OpenJobObject >function returns this handle. This handle must have >the JOB_OBJECT_TERMINATE access right.
И что происходит?
Аноним 01/04/15 Срд 22:29:14 #140 №457507 
>>457484
Русских людей обижают! Ну ничего, братушки, скоро мы вас ОСВОБОДИМ.

>>457422
Вот же ж ленивый ублюдок. Бабла, наверно, гребёт немеренно со своих фанбоев, а стандарт собственного языка не читал.
Аноним 01/04/15 Срд 22:43:55 #141 №457523 
>>457507
>>457483
москаляку на гiляку
Аноним 01/04/15 Срд 22:53:13 #142 №457528 
>>457507
>Русских людей обижают! Ну ничего, братушки, скоро мы вас ОСВОБОДИМ.
никто меня не обижает, скажу больше я свободно говорю на русском в Харькове и Мариуполе
просто документация должна быть на государственном языке
Аноним 01/04/15 Срд 22:53:36 #143 №457530 
>>457528
лекции тоже на русском
sageАноним 01/04/15 Срд 23:18:26 #144 №457536 
В каждом треде найдется даун, начинающий остоебенившую политику.
Аноним 01/04/15 Срд 23:25:08 #145 №457544 
>>457536
Да всё, закрыли тему. Пошутили и хватит. Должен же кто-то бампать, а то опять уплывёт к хуям на третью страницу.

Лучше расскажите про 15 Студию, например, в контексте поддержки стандарта. Постоянные выражения будут НАКАНЕЦТА. А что ещё?
Аноним 02/04/15 Чтв 00:46:39 #146 №457589 
Need help.

Погуглил, но так ничего и не понял.
error LNK2019: unresolved external symbol...

Ругается только на winapi-шные функции. Проблема появилась после того как запихнул куски говна кода на нормальном С++ в проект CLR.

sageАноним 02/04/15 Чтв 08:53:22 #147 №457648 
>>457589
Спермоклоунам не помогаю.
Аноним 02/04/15 Чтв 15:25:24 #148 №457806 
>>457544
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
Аноним 02/04/15 Чтв 15:44:35 #149 №457822 
14279786750400.png
14279786750411.png
>>457589
Подключи библиотеки необходимые. В справке каждой функции указана либа. В свойствах проекта линкера есть поле, куда заносишь имена этих .lib файлов. Если они валяются по нестандартным путям, прописываешь пути в соответствующем поле.
Аноним 02/04/15 Чтв 16:42:45 #150 №457862 
>>457806
Почти что нихуя. Говно.
Аноним 02/04/15 Чтв 19:07:13 #151 №457946 
Как мне сделать вектор, который может хранить любые экземпляры template-класса? Пишу std::vector<MyTemplateClass> - не хочет компилировать.
Аноним 02/04/15 Чтв 19:08:11 #152 №457948 
>>457589
user32.lib подключи в linker->input->additional deps
Аноним 02/04/15 Чтв 19:11:00 #153 №457950 
>>457946
что?
Ты хочешь std::vector<A> точбы можно было A<B> и A<C> туда пихать?
По-моему никак
Аноним 02/04/15 Чтв 19:14:56 #154 №457953 
>>457950
Но почему? И как в таком случае быть?
sageАноним 02/04/15 Чтв 19:17:49 #155 №457958 
>>457953
По кочану. Шаблоны в крестах - не дженерики, как в жабе. Это нечто уровня макросов, если не вдаваться в подробности.
Используй QVariant или аналоги, ну или union, но с этим осторожнее.
Аноним 02/04/15 Чтв 19:18:24 #156 №457960 
>>457958
Я не на qt. У меня студия.
Аноним 02/04/15 Чтв 19:19:37 #157 №457961 
>>457953
>Но почему?
Потому что для компилятора это абсолютно разные классы.
>И как в таком случае быть?
Например, хранить в векторе указатели на экземпляры классов. Или использовать что-то вроде Boost.Variant.
Аноним 02/04/15 Чтв 19:20:12 #158 №457962 
>>457958
union работает только с POD
Аноним 02/04/15 Чтв 19:20:19 #159 №457963 
Если я пишу myVector->clear(), то у объектов в этом массиве вызывается деструктор?
Аноним 02/04/15 Чтв 19:21:36 #160 №457964 
>>457963
Да.
Аноним 02/04/15 Чтв 19:22:42 #161 №457966 
>>457964
А если в векторе лежат указатели?
Аноним 02/04/15 Чтв 19:24:58 #162 №457970 
>>457648

>> 2015

>>Всё ещё не прошла боль от семёрки, хотя уже 10-я вышла.
Аноним 02/04/15 Чтв 19:34:25 #163 №457977 
>>457966
Нет
Аноним 02/04/15 Чтв 19:56:05 #164 №457986 
>>457946
Можешь использовать Type Erasure, хотя костыль получится. А что за задача?
http://habrahabr.ru/post/207294/
Аноним 02/04/15 Чтв 20:40:29 #165 №457999 
>>457966
Только если умные
Аноним 02/04/15 Чтв 20:42:33 #166 №458002 
Сделайте лабу.
Аноним 02/04/15 Чтв 21:12:53 #167 №458033 
>>457962
>>457962
В новом стандарте с любыми типами.

>>457958
в пизду кьюти. boost::variant тебе подойдет, или если пишешь на новом стандарте, то union.
sageАноним 02/04/15 Чтв 22:13:36 #168 №458064 
>>458033
>>457960
Вы в глаза долбитесь там, дауны?
>или аналоги
>или аналоги
>или аналоги
>или аналоги
Аноним 02/04/15 Чтв 23:47:08 #169 №458125 
Мудак на связи.
Решил обмазаться этим вашим QT, в котором есть все, даже небо, даже аллах. Подскажите годной литературы, а то я открыл qt'шные примеры и заблудился.
Аноним 02/04/15 Чтв 23:49:09 #170 №458127 
>>458125
Двощу. Мой воображаемый дедлайн к 9 числу должен заделать Gui приложения. Пока не знаю с чего даже начать.
Аноним 02/04/15 Чтв 23:53:20 #171 №458130 
>>458127
С доки по QObject
Аноним 03/04/15 Птн 03:15:40 #172 №458197 
>>458125
открой кутешные туториалы
Аноним 03/04/15 Птн 07:04:25 #173 №458210 
14280338650680.jpg
>>456726
чего ты там нахуярил то столько, блядь?
нужно ж два раута: создать пост и получить новые посты аяксом
html с тредом в большинстве вакаб сохраняется в файл и дальше уже статически раздается

итого:
- fastcgi либа (или можно охуеть и сделать просто cgi борду повесить демоном и общаться с ней как-нибудь). если кровь из носу хочется хостить самому (но зачем) - mongoose
- база из одной таблицы (пикчи хранить в файловой системе). даже если руками делать нуждно то btree и файлмаппинг в память (у нас же не банк, упадет и хуй с ним). ну или взять какой-нибудь leveldb, а лучше вообще sqlite
- 2 простых как палка раута + сколько влезет раутов для админки с какой угодно логикой
- (опционально) SSI или ручной сервинг для собственной капчи или csrf токена
- шаблоны, что одинакого рендерятся и на клиенте и на сервере (mustache подойдет, логики в бордовском шаблоне ноль). для подсветки синтаксиса проще на клиенте highlightjs или prism взять.
- 2 кило жс кода для подгрузки и расставления новых ссылок

короче, мне кажется, ты, браток, перемудрил
и я бы не назвал борду lightweight:
- судя по тому, что нулевая приходит 450мс ты рендеришь все заново каждый раз
- иконки приходят по одной, 60-70мс на каждую
sageАноним 03/04/15 Птн 09:49:49 #174 №458250 
>>458210
>fastcgi либа
Нахуя? Чем тебе отдельное приложение не угодило? VPS и вперед, если охота платить бабки за сайт, которым никто не пользуется. Мне вот не охота, поэтому у меня и хостится.
>база из одной таблицы
Я посмотрю, как ты будешь заново отрендеривать ссылки на посты при их удалении с такой архитектурой. Фичу с хешами файлов и подавно так не реализовать.
>sqlite
И так. Нахуй тут что-то другое?
>2 простых как палка раута
Редактирование поста, удаление поста, получение новых постов, проверка хеша файла и так далее.
>SSI
Чет нихуя не понял, зачем мне это.
>mustache
Лишний скрипт - лишний вес. Увы. А так мне идея очень понравилась.
>проще на клиенте highlightjs или prism взять
Это сразу на хуй. Во-первых, см. предыдущий пункт, во-вторых это не задача клиента. Ты еще бы предложил вакабамарк на клиенте рендерить.
>2 кило жс кода для подгрузки и расставления новых ссылок
Присутствует. В два кило, правда, без дополнительных зависимостей и без минификации не сделать.
>приходит 450мс
Проблемы клаудфлары, я полагаю.
>рендеришь все заново каждый раз
Сама страница да, рендерится. Но каждый отдельный пост по большей части кеширован (не кешируется только то, что надо локализовать, дата/время, например, или названия кнопок).
>иконки приходят по одной, 60-70мс на каждую
Опять же, проблемы клаудфлары, скорее всего. Оно там у них в кеше, что якобы должно прибавлять скорости. Наверное отключу на хуй это говно. Так то статика у меня в памяти кешируется, не должно так долго отдаваться.
sageАноним 03/04/15 Птн 09:55:23 #175 №458253 
14280441237170.png
>>458250
Как я и говорил, проблемы флары, чтоб у них понос случился. И отчасти твои проблемы тоже, судя по всему.
sageАноним 03/04/15 Птн 09:59:33 #176 №458254 
14280443739010.png
>>458253
И картинки, фор тех джастис. Так что дело во фларе и в твоем р(о)утинге до него.
sageАноним 03/04/15 Птн 14:23:39 #177 №458358 
14280602193100.png
>>456726
А тем временем:
+ Исправлено сообщение "Вам не надо вводить капчу...". Теперь после очередного поста обновляется.
+ Добавлена поддержка видео форматов .mp4 и .ogg (.ogv).
+ Реализована поддержка аудио (.mp3, .ogg, .wav).
+ Для всех поддерживаемых типов файлов добавлены иконки в поле выбора файла.
+ Загрузку файлов из треда теперь можно прерывать.
+ Количество постов без ввода капчи теперь сохраняется после перезапуска сервера.
+ Добавлена новая разметка (для тех кому не нравятся bbCode'ы). https://ololoepepe.me/board/pr/thread/15.html#165
+ Реализован свой поиск, без использования гугло-апи. Пикрелейтед.
sageАноним 03/04/15 Птн 17:24:20 #178 №458445 
>>458358
отличная доска
только вот URL сосёт
sageАноним 03/04/15 Птн 18:14:27 #179 №458461 
>>458445
Щито поделать, название нормальное придумать не могу, а говняное не хочу. Ну а без названия и домен не подобрать.
Аноним 03/04/15 Птн 18:25:53 #180 №458463 
>>456723
>Лабы идут на хуй
на этой параше пишут что-то помимо lab2?шутка
sageАноним 03/04/15 Птн 18:26:46 #181 №458464 
>>458461
ну а потом придумаеш?
sageАноним 03/04/15 Птн 18:28:27 #182 №458465 
>>458463
lab_3
sageАноним 03/04/15 Птн 18:30:42 #183 №458466 
14280750426840.png
>>458464
Конечно. Я вообще думал прикупить пикрелейтед, но чет в сомнениях, не наебалово ли, они ж недоступны для продажи были. Надо у других провайдеров еще посмотреть. Да и вообще, из доброй памяти не хочу трогать. Но все равно очень заманчиво.
Аноним 03/04/15 Птн 19:28:53 #184 №458492 
Плюсач, вобщем у меня есть одна программа, она расчитана на многочасовое выполнение, вобщем, как реализовать многозадачность\\хз как назвать. Допустим есть алгоритм:
cout<<12;
sleep(1000);
и
cout << 13'
sleep(1213);
как сделать возможным одновременное выполнение сего?
Аноним 03/04/15 Птн 19:31:39 #185 №458493 
>>458492
Мультитрединг гугли.
Аноним 03/04/15 Птн 19:31:52 #186 №458495 
>>458492
std::thread
sageАноним 03/04/15 Птн 19:34:35 #187 №458498 
>>458492
void task1() {std::cout << "ya ebal"; sleep(9000);}
void task2() {std::cout << "tvoyu mamku"; sleep(100500);}
QtConcurrent::run(&task1);
QtConcurrent::run(&task2);
Аноним 03/04/15 Птн 19:35:18 #188 №458499 
>>458498
У этого сажепетуха на все один ответ - Qt.
Аноним 03/04/15 Птн 19:35:45 #189 №458501 
>>458499
а я и не против :3
Аноним 03/04/15 Птн 19:38:39 #190 №458503 
>>458492
http://en.cppreference.com/w/cpp/thread/thread/thread
Аноним 03/04/15 Птн 19:48:09 #191 №458510 
>>458503
Ехал thread через thread,
Видит thread в thread thread.
Сунул thread thread в thread,
Thread за thread thread thread.
Аноним 03/04/15 Птн 19:49:05 #192 №458511 
>>458250
> Чем тебе отдельное приложение не угодило?
нахуя смешивать две ортогональные вещи?
захотел прямо в процессе сокет держать, ну так возьми mongoose, он из двух файлов состоит и простой как пробка

> VPS и вперед, если охота платить бабки за сайт, которым никто не пользуется. Мне вот не охота, поэтому у меня и хостится.
то есть ты не осилил поднять nginx с fastcgi модулем на своей убунте? серьезно?

> Я посмотрю, как ты будешь заново отрендеривать ссылки на посты при их удалении с такой архитектурой. Фичу с хешами файлов и подавно так не реализовать.
лолшто?
ты же все равно вытаскиваешь весь тред из базы. у тебя посты для всех айдишников в треде, в шаблоне и так подсвечивать ">>id", а посты из других тредов подтягиваются аяксом, т.к. редкость и нинужно

> Редактирование поста, удаление поста, получение новых постов, проверка хеша файла и так далее.
просто прикинь как бы ты это все написал на каких-нибудь руби в синатре, это был бы один файлик на 100-200 строк, 50% функциональности борды, а то и больше. на крестах можно придется писать больше, в любом случае, но не на порядки

> Лишний скрипт - лишний вес.
> отправляет на клиент не минимизированный html и js, а картинки 16х16 вообще одной
> mustache.min.js 8.835 kb
лол

> во-вторых это не задача клиента
охлол, хватит жить в 98ом, клиент рендерит ебать сколько всего сложного (посмотри на свои html шаблоны лол), может емулировать х86 на js и эта подсветка ему как два пальца

> Проблемы клаудфлары
> клаудфлары
> проблемы
лол, то есть это не ты контент медленно отдаешь, а специализированная система доставки контента, которая на этом к тому же деньги делает, виновата?

> не кешируется только то, что надо локализовать, дата/время, например, или названия кнопок
> локализация и темплейтинг на сервере
> 2015

> Так то статика у меня в памяти кешируется
тот же nginx сделал бы это куда лучше

ты, короче, придумал себе проблем, а теперь героически их решаешь

>>458253
> Как я и говорил, проблемы флары, чтоб у них понос случился. И отчасти твои проблемы тоже, судя по всему.
ну хуй знает
Аноним 03/04/15 Птн 19:49:44 #193 №458512 
>>458511
> захотел прямо в процессе сокет держать, ну так возьми mongoose, он из двух файлов состоит и простой как пробка
ты примерно так и сделал, тащемта, тут я не прав
sageАноним 03/04/15 Птн 20:21:58 #194 №458527 
>>458511
>нахуя смешивать две ортогональные вещи?
Какие две вещи? Приложение получает запрос, обрабатывает его, отдает ответ. Что с чем смешано?
>не осилил
Осилил, но нахуя? Что мне это дает? Скорость? Упрощение логики? Какой именно?
>нинужно
Ясно. Засчитано. И нет, тред вытягивается не весь, ссылки между постами хранятся в отдельной таблице.
>был бы один файлик
Не был бы. Писал я на ваших скриптопарашах, когда кейс выходит за рамки хеллоуворлда, получается точно такой же объем кода.
>лол
>охлол
Теперь я знаю, из-за кого веб стал таким говном.
>лол, то есть это не ты контент медленно отдаешь, а специализированная система доставки контента, которая на этом к тому же деньги делает, виновата?
Лол, то есть это не ты в глаза долбишься и отрицаешь очевидные результаты со скринов, а я медленно что-то там отдаю?
>тот же nginx сделал бы это куда лучше
Как nginx относится к моему приложению вообще? Правильно, никак. Не надо смешивать ортогональные вещи (с).
>ты, короче, придумал себе проблем, а теперь героически их решаешь
Никаких проблем нет, все прекрасно работает.
>ну хуй знает
Придумай более другое объяснение скриншотам. Время чистого рендеринга/отдачи статики сам видишь. Никаких 400мс там и близко нет.

Я вот что скажу, у нас с тобой разные взгляды на то, как все должно быть устроено. Разная философия, что ли. Может, я в чем-то и не прав, а может и ты.
sageАноним 03/04/15 Птн 20:26:45 #195 №458530 
>>458527
Пожалуй, поясню еще по поводу nginx. Не хочу раздристывать логику по всем уровням, потому как это каждый раз боль при переносе на новый хостинг. Надо все заново настраивать и т.д. Не думаю, что nginx умеет каким-то чудом быстрее обращаться к памяти. Так что пусть оно все будет в одном флаконе, так сказать, работоспособное как с nginx-ом, так и с другими приблудами, или вовсе без них.
Аноним 03/04/15 Птн 21:44:03 #196 №458558 
Вечер добрый, программач.
Есть набор .obj файлов. Как сделать превью в виде картинки?

Парсинг, отображение в огл контексте уже реализован. Но нужна именно какой-то модуль, к-й позволит сделать пикчу, ничего не рисуя на экране.

Был ли у кого-то подобный опыт?
sageАноним 03/04/15 Птн 22:06:04 #197 №458564 
>>458558
>опыт решения реальных задач
>на сосаче
Ты серьезно?
А вообще, только ручками, похоже. Гугл говорит, что готовых решений нет. Так что перегоняй байтики в нужный формат (что у тебя там, png, jpeg?) и, если надо, уменьшай размер.
Аноним 04/04/15 Суб 00:25:41 #198 №458593 
>>458558
Не понял твоей проблемы. Рисуй в текстуру, потом сохраняй ее как картинку.
Аноним 04/04/15 Суб 15:25:38 #199 №458754 
>>458498
да, допустим у меня есть две функции
class c1 {
MYOBJECT mo;
void ff();
}
void f1() {return ;}
и в классе MYOBJECT описана функция void f2() {return ;}
void c1::f1() {
QFuture<void> qF = QtConcurrent::run(f1) - комиплируется
QFuture<void> QF = QtConcurrent::run(this->mo.f2) - ошибка
return ;
}
Аноним 04/04/15 Суб 15:37:23 #200 №458760 
>>458754
f2 должна быть static.
Аноним 04/04/15 Суб 15:43:22 #201 №458763 
>>458760
а без этого никак ?
Аноним 04/04/15 Суб 16:46:48 #202 №458790 
>>458763
В другом случае считается что в качестве первого аргумента она принимает указатель на объект класса.
sageАноним 04/04/15 Суб 16:57:50 #203 №458798 
14281558709310.png
>>458763
Очень даже "как".
Аноним 04/04/15 Суб 19:20:49 #204 №458861 
>>458798
в целом получилось, функция запускатеся отдельным потоком от мейна, основной виджет продолжает функционировать несомтря на Sleep(1); не получается запустить несколько потоков выполнения.
void mwindow::on_alg_dk_1_clicked()
{
QtConcurrent::run(&this->alg, &ALGORITHM::simple_rotation); //ALGORITHM - class, alg - object of ALGORITHM in class mwindow;
}

void mwindow::on_alg_dk_2_clicked()
{
QtConcurrent::run(&this->alg, &ALGORITHM::algorithm2);
}
///////////
void ALGORITHM::simple_rotation() {
bool1 = true;
while (bool1) {
wHandle.send_char(0x41);
QThread::sleep(2);
}
return;
}
void ALGORITHM::algorithm2() {
bool2 = true;
while (bool2) {
wHandle.send_char(0x42);
QThread::sleep(3);
}
return;
}
первая кнопка заупскает выполение 1й функции, но после нажатия следующей новый поток не работает
Аноним 04/04/15 Суб 19:21:46 #205 №458863 
>>458798
Че за гуи?
sageАноним 04/04/15 Суб 19:22:58 #206 №458864 
>>458863
Qt ?
Аноним 04/04/15 Суб 19:23:33 #207 №458865 
>>458864
Нет, терминальчик няшный.
sageАноним 04/04/15 Суб 19:28:18 #208 №458867 
14281648982310.png
>>458865
Аноним 04/04/15 Суб 19:29:47 #209 №458868 
>>458867
Прикольненько. В кодеблох пидоришься? Сильно сосет относительно VS?
sageАноним 04/04/15 Суб 19:32:04 #210 №458869 
>>458861
Он и не должен. Смотри доки: http://doc.qt.io/qt-5/qtconcurrent.html#run
>Runs function in a separate thread. The thread is taken from the global QThreadPool. Note that function may not run immediately; function will only be run once a thread becomes available.
http://doc.qt.io/qt-4.8/qthreadpool.html#maxThreadCount-prop
>The default maxThreadCount is QThread::idealThreadCount().
Обычно это количество ядер.
Так что попробуй QThreadPool::globalInstance()->setMaxThreadCount(10);
sageАноним 04/04/15 Суб 19:33:24 #211 №458872 
>>458868
QtCreator. Нахуй ваши вс и кодоблохи, студия тяжелая и неповоротливая, блохи слишком куцые и ничего не могут.
Аноним 04/04/15 Суб 19:35:08 #212 №458874 
>>458872
А ты где-нибудь работаешь?
Аноним 04/04/15 Суб 19:36:33 #213 №458876 
>>458869
cпасибо, все работает, ты ахуенен
sageАноним 04/04/15 Суб 19:38:05 #214 №458877 
>>458874
В говновузе по удаленке пилю редактор TeX на крестах. Можно считать что не работаю, уже полгода как не притрагивался к коду. Платят соответственно.
Аноним 04/04/15 Суб 19:43:46 #215 №458880 
Кстати, поясните мне за потоки обычные, которые из stl. Вот ты пишешь, что хочешь 12 потоков, а у тебя процессор старый. Если мне память не изменяет, что Hyper-threading дай б-г только в 2002 появился, если не позже.
Как же реализовывали многопоточные приложения до этого? Что-то типа два потока становились в очередь, выполнялись, а потом сообщали, что выполнились?
Вот я, например, пидорил программку на сокетах - простой tcp чат. И одним потоком слушал, а другим отправлял сообщения. Как же это реализовали бы на процессорах первых поколений PentiumIV?

Олсо, знакомый рассказывал о том, что используя одну фичу - если переполнить буффер, то программа перескакивала на выполнение другой функции, которая даже не вызывалась.

void lol() {
cout << "How did we get here?"<<std::endl;
}

int main()
{
long a, b, z[10];
cin >> a >> b;
z[a] = b;
}

вводишь два определенных числа и программа "How did we get here?". Собственно похуй за переполнение, но товарищ отметил, что подобную фичу использует в некоторых проектов в качестве альтернативы многопоточности. В чем соль?


>>458877
Ну и то хорошо. Главное, чтобы на хлеб было чего намазать.
Аноним 04/04/15 Суб 20:02:47 #216 №458898 
14281669671390.png
>>458880
Лол. Надо было просто погуглить. Олсо, второй вопрос все-таки ещё остался.
Аноним 04/04/15 Суб 20:36:42 #217 №458919 
анон, задай, пожалуйста в ответ 2-3 вопроса, чтобы убедить меня, что я говно в плюсах
Аноним 04/04/15 Суб 20:38:51 #218 №458920 
>>458919
зачем нужен виртуальный деструктор?
Аноним 04/04/15 Суб 20:39:08 #219 №458921 
Если А абстрактный класс, а В унаследовный от него конкретный, можно ли так написать?
A a = new A();
A
a = new B();
Аноним 04/04/15 Суб 20:40:05 #220 №458922 
>>458921
Ебал я писать на этой борде код.
Аноним 04/04/15 Суб 20:50:00 #221 №458926 
>>458921
там тред ниже со скриптом
Аноним 04/04/15 Суб 20:51:08 #222 №458927 
>>458920
чтоб объекты наследники норм удалялись (динамический полиморфизм бла-бла-бла)
>>458921
1 строка нет, 2ая да

го посложнее че-нить епта
sageАноним 04/04/15 Суб 20:56:32 #223 №458930 
>>458880
>Главное, чтобы на хлеб было чего намазать.
Для этого мамка есть. Ебал я свои деньги на еду тратить.
Аноним 04/04/15 Суб 21:18:46 #224 №458945 
>>458927
1) Зачем нужны weak_ptr.
2) Что такое mutex
3) Что такое deadlock
4) Что такое race condition
5) Что такое слот-сигнальная архитектура
6) Знаете ли вы Boost
Аноним 04/04/15 Суб 21:21:57 #225 №458946 
Ну и
7) Чем различаются разные cast'ы в C++
dynamic_cast, static, обычный.
8) что такое vtbl, когда она создаётся.
Аноним 04/04/15 Суб 21:30:22 #226 №458949 
>>458945
годно, спасибо.
1. как шаред птр только при захвате объекта не искрементирует рефкаунтер
2. одно из средств организации доступа к объекту в условиях N потоков
3. состояние взаимной блокировки
4. хз че-то с потоками вроде тоже?
5. когда на определенное действие генерируется сигнал и ему сопоставляются слоты (типа как в Qt)?
6. нет конкретики. filesystem, regex, matrix часто. ну и по мелочам (intrusive_ptr, noncopyable и тд)
sageАноним 04/04/15 Суб 21:35:42 #227 №458952 
>>458945
Я не он, но:
1) Костыль.
2) Хуйня для совместной работы нескольких потоков с одним набором данных (переменной).
3) Лок нерекурсивного мьютекса из одного и того же потока, например.
4) Когда потоки одновременно пытаются работать с одним куском данных, и в каком порядке произойдет взаимодействие неизвестно (а может один поток начнет работать, когда второй еще не закончил и кровькишкираспидорасило).
5) Костыль для замены рефлексии, но довольно удобный.
6) Говно ебаное. Нахуй не нужен. Шутка.
7) Лень описывать, но короче статик самый строгий, динамик так и сяк, а ренинтерпрет - можно в ногу выстрелить.
8) Таблица виртуальных методов. Чтоб короче из приведенного к базовому классу объекта наследованного класса можно было вызывать виртуальный метод, а вызывался метод, определенный в наследованном классе. Создается если есть хоть одни виртуальный метод (вроде).
Нахуй я это пишу.
Аноним 04/04/15 Суб 21:37:18 #228 №458953 
>>458946
8. таблица вртутальных функций для класса, нужно наличие как минимум 1 виртуальной функции
7. вот в этот говне я плаваю сильно, с кастами слабо всегда было.
динамик каст ну для иерархий вируальных классов.
static cast и обычный - хз не знаю разницы, по-моему оба каста времени компиляции обычные, с проверками типов
const cast снимает волатайл и конст, хз не юзал ни разу в жизни
reinterpret cast типа без проверки типов каст, хз тоже не юзал ни разу

про касты если простым языком напишешь и конкретно где применяется конст и reinterpret было бы круто
Аноним 04/04/15 Суб 21:41:35 #229 №458960 
>>458952
> signal/slot
> Костыль для замены рефлексии
Wat?

>>458919
Что такое SFINAE? И нах он нужен?
Что такое идеальная передача?
Какие условия должны соблюдаться, чтобы тип был POD?
Аноним 04/04/15 Суб 21:42:23 #230 №458961 
>>458949
Так-то верно, но от 1,4 МЫ ВАМ ПЕРЕЗВОНИМ
1) Не как устроен а зачем нужен, юзкейсы. На собеседованиях кстати почти всегда спрашивают о юзкейсах в каком-то понятии а не об абстрактном определении. Было ли у тебя такое на практике. Что именно приводило к ситуации.

Ответы сам нагуглишь, они легко гуглятся.

>>458952
>1) Костыль.
Вот такое на собеседовании тоже нельзя говорить, на крестах пишут старпёры по 40 лет, и тут какой-то сопляк в скайпе им будет пояснять что костыль а что нет. У них от этого сразу НЕПРИЯТНО становится.
>5) Костыль для замены рефлексии, но довольно удобный.
ШТО?
>6) Boost не нужен
Лол, boost это как всякие Spring и Hibernate для жабы, без него никуда.
>>458953
Если честно то там где я работал никто не юзал ничего кроме static_cast и били по голове если кто-то вообще пытался использовать RTTI. Вся работа по определению типа была сделана сквозь Visitor'ы (Паттерн такой, самый наркоманский на первый взгляд). Хотя по идее ведь даже сквозь Visitor мы используем RTTI неявно, когда вызываем внутри виртуальный метод обьекта. Так-что я кроме static_cast и dynamic_cast ничего и не помню.
sageАноним 04/04/15 Суб 21:46:29 #231 №458964 
>>458960
А что не так? Хз как в ваших бустах это реализвано (и знать не хочу), а в Qt сигналы и слоты позволяют вызывать методы по имени, то есть ты можешь хоть в рантайме у юзера запросить строку с названием метода и вызвать его.
Не только это, конечно, но в основе именно оно лежит. Метакомпилятор добавляет в отдельный файл таблицу соответствия названий методов и самих методов (ну и сигнатур, само собой). В жабе все это при помощи рефлексии делается, ну, там, [code lang=cpp]object.call("methodName");[/code] или типа того, точно не помню, а в Qt [code lang=cpp]QMetaObject::invokeMethod(object, "methodName");[/code]
Аноним 04/04/15 Суб 21:47:23 #232 №458966 
>>458961
ладно спасибо, про weak ptr я только в теории тоже знаю, тк не использовал тоже ни разу, я ж вообще не с++ программист, а потоки и паттерны да, надо подтягивать обязательно, спасибо
Аноним 04/04/15 Суб 21:49:21 #233 №458967 
>>458960
>Что такое SFINAE? И нах он нужен?
лил, хз
>Что такое идеальная передача?
шта?
>Какие условия должны соблюдаться, чтобы тип был POD?
для меня это любой тип в с++ пришедший из С (не ООПшный карочи)

[spioler]унизил кароч)))[/spoiler]
sageАноним 04/04/15 Суб 21:50:33 #234 №458968 
14281734338140.jpg
>>458961
>нельзя говорить
Мне поебать. Пусть берут мудака, не умеющего думать, зато умеющего лизать, их дело. Костыль есть костыль.
>ШТО?
См. >>458964
>без него никуда
И как же это я без него живу? Ни одного метода из буста не знаю на память, срсли, никогда не испытывал проблем, ведь есть Qt. Хотя, может в байтоебстве и нужен, я ж написал что шутка, но мне оно не интересно.
>Паттерны
Прости, слово-триггер, не удержался. Пикрелейтед.
Аноним 04/04/15 Суб 21:51:48 #235 №458970 
>>458964
Тёплое с мягким перепутал. Мок в кутах, конечно, позволяет получать метаинформацию об объектах, но вопрос был про архитектуру сигнал/слот. Вещи связанные, но ответ должен был быть в духе:
Мамка посылает сигнал, что приезжает тётя Люда, после чего у Бати срабатывает подключённый слот – одеть праздничные штопанные труханы.
sageАноним 04/04/15 Суб 21:55:19 #236 №458971 
>>458960
Алсо,
>SFINAE
Костыль, опять же, но точнее плохой дизайн, но полезно.
>идеальная передача
Это не && ли в конструкторе случаем? Очередное байтоебство, может где-то и пригодится.
>POD
Ну вот нахуя это знать на память? Заняться что ли больше нечем? Тип без конструкторов, деструкторов и виртуальных методов. Не представляю, где это необходимо знать заранее.
sageАноним 04/04/15 Суб 21:56:29 #237 №458973 
>>458970
Я описал как оно внутри работает. То что ты говоришь и так очевидно: кто бы мог подумать, что испускание сигнала вызывает слот! Вот это нежданчик.
Аноним 04/04/15 Суб 21:56:47 #238 №458974 
>>458919
1. Несколько переменных одинакового типа объявляются так: int a, b, @c (@ вместо звездочки). Вопрос: как это все взаимодействует с const? Можно ли делать int a, const b, @const c?
2. В чем разница между const char @c = "..." и const char c[] = "...".
3. Для чего нужно ключевое слово mutable.
Аноним 04/04/15 Суб 21:58:06 #239 №458975 
>>458952
>короче статик самый строгий, динамик так и сяк
Мы свяжемся с вами позже
Аноним 04/04/15 Суб 22:00:13 #240 №458979 
>>458974
> 2.
Разве есть разница?
sageАноним 04/04/15 Суб 22:00:51 #241 №458980 
>>458973
Ну то есть я хочу сказать, вызывающий передает системе строку с именем сигнала, система смотрит, какие слоты (опять же, по именам) прикручены, находит их, вызывает. Если тип соединения соответствующий и/или получатель живет в другом потоке, то ставит в очередь этого потока, там свой цикл уже разбирается при очередном проходе. Но суть все равно в том, что оно основано на рефлексии, иначе получается как в бусте коряво и нинужно.
Аноним 04/04/15 Суб 22:01:17 #242 №458981 
>>458974
1.
>Можно ли делать int a, const b, @const c?
const b нельзя @const c можно
2. первое констатный указатель на строку в read-only памяти, второе массив на стэке
3. чтоб const методы могли менять эти переменные

спасибо за вопросы
Аноним 04/04/15 Суб 22:03:05 #243 №458982 
>>458973
Вопрос был про архитектуру, а не про реализацию в конкретной библиотеке.
sageАноним 04/04/15 Суб 22:04:56 #244 №458985 
>>458975
А мы с вами, неаргументированный хуесос, даже связываться не будем.
>>458974
>1
Не еби никому мозги, так объявлять переменные - все равно что ходить с голой обосранной жопой по улице.
>2
Синтакисчески сахар вроде. Если правильно помню, в обоих случаях будет указатель на ридонли память (хотят тут от конпелятора и системы зависит).
>3
Чтоб переменную класса с этим модификатором можно было менять в const-методе. Как правило используется для мьютексов или каких-то внутренних счетчиков (последнее часто - плохой дизайн).
Аноним 04/04/15 Суб 22:05:22 #245 №458986 
>>458981
> const b
http://ideone.com/9RyGr0
sageАноним 04/04/15 Суб 22:05:59 #246 №458987 
>>458982
Генерируешь сигнал, он вызывает все связанные слоты. В чем вопрос тогда?
Аноним 04/04/15 Суб 22:07:03 #247 №458988 
>>458987
Хуй знает, но задающий рассчитывал именно на такой ответ.
Аноним 04/04/15 Суб 22:07:25 #248 №458990 
>>458986
ошибка же, лол
prog.cpp:5:9: error: expected unqualified-id before 'const'
int a, const aVotHui = 5;
sageАноним 04/04/15 Суб 22:07:51 #249 №458991 
Все, ну вас на хуй, специальисты по байтоебству, блять. Лучше гаремник очередной посмотрю пойду, чем с тырпрайзщиками спорить. Скрипт ставьте, кстати, не зря же делал https://2ch.hk/pr/res/457262.html
Аноним 04/04/15 Суб 22:08:01 #250 №458992 
>>458985
>неаргументированный
Человеку, который не упомянул об RTTI при dynamic_cast, точно никогда не перезвонят.
Аноним 04/04/15 Суб 22:08:47 #251 №458993 
>>458990
Да, я потом только перечитал и понял, что обосрался. Сначала вообще о другом подумал.
Аноним 04/04/15 Суб 22:11:35 #252 №458994 
>>458979
>Разве есть разница?
Есть. В случае указателя на строку тут две сущности. Указатель и сама строка. Для указателя выделяется отдельное место в памяти, туда записывается адрес начала строки. Можно получить адрес этой указателя. В случае массива отдельного указателя не создается, при использовании данной переменной сразу подставляется адрес массива.
Аноним 04/04/15 Суб 22:12:58 #253 №458996 
>>458994
Путано как-то. Т.е. в случае указателя, мы в куче строку получаем таки?
Аноним 04/04/15 Суб 22:15:04 #254 №458997 
и сколько нынче получают те, кто знает что такое SFINAE (адская ебола какая-то)?
Аноним 04/04/15 Суб 22:16:48 #255 №458998 
>>458996
Строка есть и там и там, только в случае указателя есть еще и отдельная переменная с ее адресом. То есть можно сделать: char @c = "asdf"; char @@pc = @c; С массивом так не сделать.
Аноним 04/04/15 Суб 22:18:23 #256 №458999 
>>458997
Лол, я нисколько, я нищенка-студент оптик, который скоро пойдёт бомжевать на улицы.
sageАноним 04/04/15 Суб 22:19:22 #257 №459002 
>>458992
Мы не на собеседовании. Ебал я тут распинаться перед даунами. Это во-первых. Во-вторых, мне поебать, что оно там задействует и как это что-то называется, мне важно как оно работает и какие нюансы при этом всем. Именно поэтому я пишу программы, а кукаретики пишут факториалы.
Аноним 04/04/15 Суб 22:22:08 #258 №459003 
>>456723
Ищу по С++ годную книжонку на рюсском в бумажном варианте. Какую посоветуете?
Аноним 04/04/15 Суб 22:22:48 #259 №459005 
>>458999
так иди зарабатывай кэш, одноруппник долбоеб с 0 опытом работы и практически 0 знаниями на 40к устроился спп дрочером, что вполне неплохо
>>459002
все, всё понимают, расслабься
Аноним 04/04/15 Суб 22:23:34 #260 №459006 
>>459003
если для начинающего я бы Шилдта посоветовал
sageАноним 04/04/15 Суб 22:24:29 #261 №459007 
>>459003
Прата.
>>459005
Засчитано.
Аноним 04/04/15 Суб 22:26:28 #262 №459008 
>>459002
>мне важно как оно работает и какие нюансы при этом всем
Работает так, что static_cast делается при компиляции, а dynamic_cast - в рантайме, с помощью RTTI. А нюанс такой, что за пределами десктопа ни RTTI ни эксепшены часто недоступны, а без RTTI нет и дайнемик кастов.
Аноним 04/04/15 Суб 22:27:37 #263 №459009 
>>459005
Блджад, я разобрался с самим языком, знаю некоторые основы обработки сигналов, немного SQL с Qt, а в вакансиях всегда требуют ещё какую-нибудь хуйню, из-за чего дико ссыкую.
Аноним 04/04/15 Суб 22:29:07 #264 №459011 
>>459009
какой курс, город?
Аноним 04/04/15 Суб 22:31:19 #265 №459013 
>>459011
4, ДС2.
inb4: Ну и долбоёб, в ДС2 работу не нашёл
Аноним 04/04/15 Суб 22:32:44 #266 №459014 
>>459013
Алексей? лол.
sageАноним 04/04/15 Суб 22:34:06 #267 №459015 
>>459008
Я знаю, ты читай внимательно:
>Лень описывать, но короче...
Если все подробно описывать, на меленькую статью хватит. У нас же не собеседование.
Аноним 04/04/15 Суб 22:35:45 #268 №459016 
>>459014
Мимо.
Аноним 04/04/15 Суб 22:37:42 #269 №459017 
>>459015
>Я знаю
Вот из этого "но короче статик самый строгий, динамик так и сяк" ясно видно, что нет.
Аноним 04/04/15 Суб 22:39:32 #270 №459019 
>>459017
Да запарил ты, он и сам понимает знает он или нет, мы же тут не срез по знаниям устраиваем. Это его дело, хочет работать на С++ - узнает или знает, не хочет - и не нужно тогда. Может человек просто ради интереса решил ответить на вопросы.
Аноним 04/04/15 Суб 22:40:29 #271 №459021 
>>459016
Ок NVM, просто много совпадений.
Английский знаешь? Базовый уровень DSP есть? В магистратуру собираешься?
Аноним 04/04/15 Суб 22:44:17 #272 №459024 
>>459021
> Английский знаешь?
Читать литературу, спросить дорогу и заказать пиво знания хватает.

> DSP
Нету, советуешь обмазаться?

> В магистратуру собираешься?
Да, думаю преподавать какую-нибудь околопогромистскую хуйню.
sageАноним 04/04/15 Суб 22:46:53 #273 №459026 
>>459019
Хоть кто-то адекватный.
>>459017
Ты понимаешь хотя бы, что мне не всралось анонимному хуесосу доказывать, знаю ли я что-то или нет?
Аноним 04/04/15 Суб 22:51:17 #274 №459027 
>>459024
>Нету, советуешь обмазаться?
да не, только если не собираешься с этим работать или ради интереса.

блин, наебал я тебя, я думал щас открытые вакансии для стажеров есть, а в Питере нету(

просто хотел сказать, что требования всегда завышены, так что не очкуй, открывай резюме на hh, сами звонить будут
Аноним 04/04/15 Суб 22:58:53 #275 №459032 
Как жеж у меня полыхать стало после >>458920 вопросов.
Говорите книгу и страницу, с которой начать её, чтобы зашить эти дырки в знаниях, блядь1!!
Аноним 04/04/15 Суб 23:01:05 #276 №459033 
>>459032
любую по С++ с самого начала, лил
Мод метод Эйлера  loshara 04/04/15 Суб 23:06:13 #277 №459034 
Двощ, помоги разобраться почему цикл делает один присест и, забивая на условие выходит из него
Сам код (функция ff=(y-1)/(x+1) но до пизды, потому что должен уметь со всем решать):
double Y,eps,x=0,y=0,x1,y1,h,j=0;
int a,b,N=5,i=0;
eps=1e-6;
a=0;
b=20;
h=(b-a)/N;

i++;
x1=x+ih;
y1=y+h
ff(x,y);
y1=y+h(ff(x,y)+ff(x1,y1))/2;
do
{
N=N
2;
h=(b-a)/N;
x1=x+ih;
Y=y+h
ff(x,y);
Y=y+h*(ff(x,y)+ff(x1,Y))/2;
j++;
}while(fabs(Y-y1)<eps);
Аноним 04/04/15 Суб 23:08:46 #278 №459035 
>>459034
давай на пастебин
Аноним 04/04/15 Суб 23:09:11 #279 №459036 
>>459034
Ideone для кого придумали?
 Аноним 04/04/15 Суб 23:10:34 #280 №459037 
>>459035
>>459036
пастебин?
айдеон?
что это?
 Аноним 04/04/15 Суб 23:12:39 #281 №459040 
>>459035
http://pastebin.ru/gZKggq8V
вот
Аноним 04/04/15 Суб 23:13:14 #282 №459041 
>>459037
В следующий раз, когда захочешь показать здесь кому-нибудь код, используй это:
http://ideone.com/
http://pastebin.com/
Аноним 04/04/15 Суб 23:15:55 #283 №459044 
>>459041
Или [code][/code] + скрипт
https://github.com/ololoepepe/MakabaCode
https://2ch.hk/pr/res/457262.html
Аноним 04/04/15 Суб 23:17:30 #284 №459046 
>>459034
самое время научиться использовать дебаггер))))
Аноним 04/04/15 Суб 23:17:33 #285 №459047 
>>459034
В условии знак другой должен быть, понимаешь как while работает?

while(fabs(Y - y1) > eps);
Аноним 04/04/15 Суб 23:18:39 #286 №459048 
>>459047
Правда теперь у тебя вообще всё падает.
Аноним 04/04/15 Суб 23:18:45 #287 №459049 
С чего начать ? есть какие-нибудь онлайн-сервисы для обучения ?
знаю основы явы и паскаля
Аноним 04/04/15 Суб 23:19:51 #288 №459051 
>>459049
http://en.cppreference.com/w/
Аноним 04/04/15 Суб 23:20:22 #289 №459052 
>>459049
На пикче ньюфаг–треда всё показано.
Лафоре ООП C++
 Аноним 04/04/15 Суб 23:22:14 #290 №459053 
>>459047
>>459048
но ошибка с ебанутым циклом исправена, спасиб большое, дай Б-г тебе здоровья.
С вылетом попробую разобраться
Аноним 04/04/15 Суб 23:26:17 #291 №459056 
>>459033
Ну я циклы, массивы, указатели и прочее знаю, но вот как понеслось - weal_ptr, mutex - вообще какое-то говно, которое совсем чуть-чуть слышал.
Аноним 04/04/15 Суб 23:29:54 #292 №459061 
>>459056
ну там многое написали это не непосредственно стандарт С++ а связанные с работой программиста вещи, а что касается кастов, RTTI, умных указателей и так далее то это все можно найти в любой книге по С++. открой любую из нормальных книг и листай с начала до момента пока не перестанешь понимать, оттуда и читай.
Аноним 04/04/15 Суб 23:30:56 #293 №459063 
>>459061
Короче. У меня такой план. Я взял Парта и тупо выполняю все задачи, которые он задает в конце. Как только начинает валиться говно - читаю параграф, норм?
Аноним 04/04/15 Суб 23:32:01 #294 №459066 
>>459063
да
Аноним 04/04/15 Суб 23:32:12 #295 №459067 
>>459056
Читай Амерааля про STL, Майерса с эффективными книгами и обзором модерн цпп, ещё Александреску. Про многопоточность в плюсах написал Вилльямс хорошо.
Байтоёбом будешь.
Аноним 04/04/15 Суб 23:40:11 #296 №459073 
>>459067
> Амерааля
Внезапно осознал, что он устарел. Но у того же Майерса есть книга про эффективный STL.
Аноним 05/04/15 Вск 02:46:29 #297 №459120 
14281911897090.jpg
>>457953
Переходить на Хаскел.
Аноним 05/04/15 Вск 04:54:28 #298 №459131 
>>457946
Про типы уже пояснили.

>>457961
>Или использовать что-то вроде Boost.Variant.
Нахуя тащить буст? Variant лучше самому навелосипедить-накопипастить, особенно с таким неокейным пониманием.

лол, ану-с, потестим
[code]
class Variant
{
public:
Variant();

Variant(const Variant& t)
{
object = (t.object);
}

template <class T>
Variant(const T& t)
{
typedef Type<T> assign_type;
object = std::auto_ptr<assign_type>(new assign_type(t));
}

template <class T>
Variant& operator = (const T& t)
{
typedef Type<T> assign_type;
object = std::shared_ptr<assign_type>(new assign_type(t));
return this;
}

template <class T>
operator T ()
{
typedef Type<T> assign_type;
assign_type& Type = dynamic_cast<assign_type&>(
object);
return Type.get();
}

private:

class Base
{
public:

virtual ~Base();
};

typedef std::shared_ptr<Base> base_ptr;

template <class T>
class Type : public Base
{
public:

Type(T const& t)
: object(t)
{
}

T get() const
{
return object;
}

private:

T object;
};

base_ptr object;
};
[/code]
sageАноним 05/04/15 Вск 10:08:01 #299 №459184 
>>459131
Ебучая макака на каждом шагу ставит подножки. Обновите скрипт, исправил замену табуляции на \t, теперь заменяет все символы табуляции пробелами (количество пробелов высчитывается исходя из положения \t в строке).
Аноним 05/04/15 Вск 11:01:26 #300 №459199 
>>458466
Если не ты купишь, купит какой-нибудь Педалик.
C Аноним 05/04/15 Вск 11:13:22 #301 №459203 
Вопросец по велосипедным битовым полям. У меня имеется массив в памяти, который много раз в цикле заполняется битами. Т.е. он выделен с помощью malloc, а затем в цикле он заполняется (и потом пишется в файл, одна итерация цикла равна одной записи одного и того же размера). Т.е. получается бинарный файл. И уже после всех итераций цикла идёт free.

Как БЫСТРЕЕ делать каждый проход цикла: memset 0, а потом выставлять единички:
for i = 0 ... i_max
for m = 7 ... 0
if (ololo) arr|i] |= 1 << m

или прямо по старым значениям выставлять и единички, и нули:
for i = 0 ... i_max
for m = 7 ... 0
if (ololo) arr|i] |= 1 << m
else arr|j] &= ~(1 << m);

P.S. Открывающую квадратную скобку заменил на | чтобы макаба квадратные скобки не схавала.
sageАноним 05/04/15 Вск 11:14:21 #302 №459204 
>>459199
Да оно не продается судя по всему, это либо глюк у конкретного провайдера, либо наебалово. А я как наивный мудак слюни распустил. Вот тут пишет, что мол занят домен: https://www.nic.ru
Пробовать за такие бабки с шансом наебалова что-то жаба давит. inb4 копейки, но нет, жаба - она такая.
sageАноним 05/04/15 Вск 11:19:02 #303 №459205 
>>459203
Ну смотри. Мемсет - лишняя операция над целой областью памяти. Ты все равно проходишься по всем элементам потом, так что нахуя вызывать дополнительно мемсет? А вообще сделай массив побольше да проверь, сколько будет выполняться каждый вариант.
Аноним 05/04/15 Вск 11:40:01 #304 №459216 
>>459205
С точки зрения количества операций безусловно ты прав. Но я же говорю о скорости.

Если скорость побитовых операций arr|i] |= 1 << m
arr|j] &= ~(1 << m)

равна или скажем 0.9 от скорости мемсета, то вопрос вообще снимается.
sageАноним 05/04/15 Вск 11:48:46 #305 №459218 
>>459216
Просто проверь и не еби себе и остальным мозг.
Аноним 05/04/15 Вск 13:31:01 #306 №459240 
>>459203
Зачет тебе memset, если ты можешь использовать calloc?
Аноним 05/04/15 Вск 14:35:40 #307 №459267 
>>459131
Если хранить данные в хипе, то вместо твоего велосипеда проще сделать для классов общий интерфейс, а в векторе - шэрд пойнтеры. Если же надо данные хранить в векторе, то надо велосипедить что-то вроде:

template <class Iface, size_t Size>
class Storage {
char m_storage[Size];
public:
Iface *get() ...
Аноним 05/04/15 Вск 15:25:18 #308 №459276 
Анончик, я тут читаю книжку про многопоточность и всё не могу понять, нужно ли блочить мьютексы при простом чтении данных, например:
http://pastebin.com/WEZPb1Xr
Аноним 05/04/15 Вск 15:31:29 #309 №459280 
>>459240
Затем что я умею внимательно читать:
>У меня имеется массив в памяти, который много раз в цикле заполняется битами.

Хотя, быть может, я не совсем удачно выразился.
Смысл в том, что он многократно целиком переписывается. Это понятно из контекста:

>или прямо по старым значениям выставлять и единички, и нули:
Аноним 05/04/15 Вск 15:31:51 #310 №459281 
>>459276
Зависит от ситуации. Лень описывать но тебе проще нагуглить что такое race conditions и deadlock'и. Куча примеров.
sageАноним 05/04/15 Вск 16:41:13 #311 №459317 
>>459276
Если ты во всех потоках только читаешь данные, то вообще лочить необязательно. Но учти, что запись может происходить где-то внутри, если ты работаешь с высокоуровневым интерфейсом. Так что без блокировки можно обращаться к данным только тогда, когда ты абсолютно уверен в том, что делаешь.
Далее, в том же Qt, например, есть QReadWriteLock, который соответственно можно лочить на чтение, либо на запись. Причем на чтение могут лочить сколько угодно потоков одновременно, а на запись. разумеется, только один. Это так, для справки.
Аноним 05/04/15 Вск 17:33:58 #312 №459337 
14282444389760.png
>>458527
да, сегодня норм грузится, 1.5-2 секунды на нулевую

> Я вот что скажу, у нас с тобой разные взгляды на то, как все должно быть устроено.
ты свалил кучу разного функционала в один проект, хотя он просто разбивался на небольшие модули. и, о чудо, добрая половина этих модулей уже существует в виде библиотек

> Какие две вещи? Приложение получает запрос, обрабатывает его, отдает ответ. Что с чем смешано?
ты, видимо, никогда не пользовался веб-серверами дальше простейшего сервинга статики
веб-сервера реализуют за тебя дохуища логики и делают это обычно в разы быстрее нежели ты руками
а еще, несколько процессов не могут слушать вместе волшебные 80 и 443 порты

итак, основные поинты:
- сервер сервит не только твою борду
- если твоя борда упадет сервер ее перезапустит (можно, конечно, monit на процесс повесить)
- овер дохуя всего, чего ембед сервера не умеют (потому что нахуй они не нужны такие жирные). взгляни хотя бы на вики по lighthttpd: http auth, url rewrite (тебе, так то, не нужен), ssl/tls, статистика, ssi, подробные логи, gzip
встраиваемые веб-сервера нормально подходят для внутренних микросервисов и железок типа роутеров, встраивать вебсервер в обычный веб-сайт не оправдано ничем, ты просто выкидываешь многолетний опыт и накопленные возможности ради мифической скорости, кажущегося KISS/YAGNI/эназа_модная_аббревитура.
особенно, учитывая, что твой подход требует больше кода

> Теперь я знаю, из-за кого веб стал таким говном.
веб-стек всегда был говном. желание перенести с сервера на клиент большую часть того, что может делать клиент сам - абсолютно нормально и, более того, практиковалось всегда и везде. речь не идет о том, чтобы валидацию, например, убрать с сервера.
локализовывать на сервере нужно контент, чтобы поисковики нормально работали, а у тебя локализовывать нечего.

> Никаких проблем нет, все прекрасно работает.
ты количество кода для этого "прекрасно" видел?
и я не хочу никого обижать, но все это на уровне основной массы php3 из нулевых

посмотри на вещи следующим образом: борда - интерфейс к данным с некоторым шаблонизатором
задача твоего кода конвертировать данные, что прислал двачующий, в данные в формате базы и обратно. и только.
пик тотали рилейтед
ОТКУДА ТАМ, БЛЯДЬ, СТОЛЬКО КОДА?
Аноним 05/04/15 Вск 19:20:18 #313 №459422 
Как передать массив в функции rec и nerec, не используя глобальные переменные?
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent
Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject Sender)

{
int rec(int, int, int);
int nerec(int, int, int);
int key = StrToInt(Edit1->Text);
int first=0,last=9;
switch(RadioGroup1->ItemIndex){
case 0:
Edit2->Text=FloatToStrF(rec(first,last,key),ffFixed,8,0);
break;
case 1:
Edit3->Text=FloatToStrF(nerec(first,last,key),ffFixed,8,0);
break;
}
}
int a[10]={1,2,3,4,5,6,7,8,9,10},
p=a;
int nerec(int first, int last, int key)
{

while (first <= last) {
int mid = (first + last) / 2;
if (key > (p+mid))
first = mid + 1;
else if (key <
(p+mid))
last = mid - 1;
else
return mid;
}
}
int rec(int first, int last, int key)
{
if (first <= last) {
int mid = (first + last) / 2;
if (key == (p+mid))
return mid;
else if (key <
(p+mid))

return rec(first, mid-1, key);
else

return rec(mid+1, last, key);
}
}
Аноним 05/04/15 Вск 19:24:20 #314 №459424 
>>459422
Ссылки/указатели выбирай что хочешь.
sageАноним 05/04/15 Вск 19:25:50 #315 №459425 
>>459337
>да, сегодня норм грузится
Я же говорю, это ссаная флара. Отключил и все нормально. Я же не платил им, видимо для халявщиков скорости урезаются.
>разбивался на небольшие модули
Но зачем? Чтобы ебаться с их настройкой и состыковкой воедино?
>добрая половина этих модулей уже существует в виде библиотек
Например?
>веб-серверы
Ой все. https://ololoepepe.me/files/nginx.conf (Да, это не что-то супер-крутое, но я хочу сказать, что представляю, для чего нужны веб-серверы.)
>абсолютно нормально
Желание то нормально, но юзеру от этого не легче. Не слишком приятно с мобильного интернета открывать страницы, грузящие сотни килобайт JS-зависимостей. Каждый килобайт на счету. Это вы там в своих московиях зажрались, а у нас, замкадышей, все еще каменный век.
>количество кода
Почему тебе так НЕПРИЯТНО от этого? Я правда не понимаю. Не 100к строк же, всего около 20 вместе с шаблонами и скриптами, это очень мало по сравнению с нормальными проектами.
>но все это на уровне основной массы php3 из нулевых
Г-споди, да любой бэкенд на том же уровне. Все что нового придумано - клиент-сайд скриптоговно и красивые кнопочки. Сервера как обрабатывали запросы 10 лет назад, так и сейчас обрабатывают, что там нового то изобретать?
>задача твоего кода конвертировать данные, что прислал двачующий, в данные в формате базы и обратно.
Так я больше ничего и не делаю. Только конвертировать нужно разные данные, разными способами, так код и растет. Ну и бойлерплейт. Кресты в этом плане не далеко от жабы ушли по выразительности и лаконичности, щито поделать.
sageАноним 05/04/15 Вск 19:26:50 #316 №459427 
>>459422
Для начала воспользуйся тегом [code] для вас же пидоров юзерскрипт писал или pastebin/ideone.
Аноним 05/04/15 Вск 19:28:40 #317 №459431 
>>459427
Как прикрутить этот юзерскрипт себе?
sageАноним 05/04/15 Вск 19:29:29 #318 №459432 
>>459431
Браузер какой? Для лисы это делается через greasemonkey (расширение такое), для других не знаю, может аналоги есть (в хроме точно есть).
Аноним 05/04/15 Вск 19:30:19 #319 №459433 
>>459432
Хромоног.
sageАноним 05/04/15 Вск 19:31:11 #320 №459434 
>>459433
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ru
Аноним 05/04/15 Вск 19:35:32 #321 №459439 
[code lang="C++"]
#include <iostream>
int main()
{
std::cout << "Hello world!" << std::endl;
return 0;
}

[/code]
Аноним 05/04/15 Вск 19:40:33 #322 №459446 
14282520333960.png
>>459439
Вау, просто 10/10.
sageАноним 05/04/15 Вск 19:44:07 #323 №459452 
>>459446
Скриптоговно, сэр. Оно всегда очень медленно работает, особенно когда объем данных превышает пару строк.
sageАноним 05/04/15 Вск 19:57:19 #324 №459467 
>>459452
А хотя нет, это я обосрался малость. Исправил, залил.
Аноним 05/04/15 Вск 20:00:47 #325 №459473 
>>459424
Это мне уже говорили. Но как мне, например, объявить массив в той же форме баттонклик и затем передать его в функции рек и нерек? Или это вообще как-то иначе нужно сделать?
Аноним 05/04/15 Вск 20:12:20 #326 №459494 
>>459467
Ну ты пиши, пиши. Я себе чуть позже, как по-стабильнее будет, накачу.
Аноним 05/04/15 Вск 20:21:44 #327 №459501 
>>459473
Ты можешь просто обьявить массив как
int a[10]={1,2,3,4,5,6,7,8,9,10}
внутри своего Button1Click
В обьявлении функции добавь к примеру вот такой параметр int* a (Получаешь указатель на первый эл-т массива, он в С одновременно является и началом массива) и int size (размер массива чтоб знать сколько в нём эл-тов, ну в твоём случае будет 10 всегда, можешь и без этой переменной.

В этих функциях работаешь с ним как с обычным массивом.

Только ты должен понимать что в таком случае ты создаёшь массив на стэке каждый раз при вызове функции Button1Click и как только закрывается скобка } (Закончится эта функция) - можешь считать что этот массив в памяти уничтожен. Пользоваться ссылками или указателями на него нельзя.
Аноним 05/04/15 Вск 20:41:23 #328 №459515 
>>459501
Ох, спасибо огромное. Получилось.
Аноним 05/04/15 Вск 21:17:54 #329 №459548 
>>459467
Лел, я тебе там Pullrequest бросил с readme файлом. Ты там их смержи что ли как-нибудь.
Аноним 05/04/15 Вск 21:44:45 #330 №459563 
Плюсачи, посоветуйте норм компилятор IDE тоже пойдет с меня как всегда НИХУЯ
Аноним 05/04/15 Вск 21:47:20 #331 №459564 
>>459563
GCC GNU
Code::Blocks
 loshara 05/04/15 Вск 21:53:54 #332 №459568 
Антоны, спасите помогите. Я всю голову сломал об этот модифицированный метод эйлера. Научил его считать корень в одном узле но только при первом приближении, т.е. когда первый раз делю шаг на два. Ок. Но на всем остально отрезке выдает нули т.к. после этого самого профитного идут одни нули
Прошу помосчи
http://pastebin.com/GfwtpkeC

sageАноним 05/04/15 Вск 21:59:13 #333 №459572 
>>459548
Сделол. Алсо см. >>459569
sageАноним 05/04/15 Вск 22:00:56 #334 №459575 
>>459568
Лаба? Забей на нее, говно без задач.
Аноним 05/04/15 Вск 22:08:09 #335 №459581 
>>459569
Надо будет дописать тогда. Это мой первый контрибьют, кстати. Надо теперь что-нибудь с кодом, но я пока мало знаю, лол.
Аноним 05/04/15 Вск 22:15:39 #336 №459586 
>>459568
Ты там Коши рещаешь или как?
 Аноним 05/04/15 Вск 22:18:41 #337 №459587 
>>459575
>>459586
да при у(0)=0 функция там есть dy/dx тобишь
Аноним 05/04/15 Вск 22:22:10 #338 №459588 
>>459587
Что ты там за ахинею считаешь в for?
Аноним 05/04/15 Вск 22:26:25 #339 №459590 
>>459587
Кинь уже описание лабы, там подскажу мб чего.
Аноним 05/04/15 Вск 22:56:15 #340 №459605 
Если с/с++ умрет, то на какой язык все перейдут? вот сам считаю, что никогда не умрут эти два языка (особенно С), но вот уже 2 дня мучает этот вопрос
мимо не-java-php-c#-пидор
Аноним 05/04/15 Вск 22:57:53 #341 №459606 
>>459605
А с чего он умрет?
Аноним 05/04/15 Вск 22:58:14 #342 №459607 
>>459605
На другой системный. Но не думаю что это скоро произойдёт, на С/С++ уже столько кода написано, что даже не представляю как его будут менять.
Аноним 05/04/15 Вск 22:58:24 #343 №459608 
>>459605
forth
Аноним 05/04/15 Вск 23:02:37 #344 №459611 
14282641575840.jpg
>>459425
> Каждый килобайт на счету.
> ходить на имиджборды, где на глагне сплошные картиночки
проиграл
отрендерил в <pre>, асинхронно прогрузил prism.js 9.6kb, применил
и все довольны
хотя, ладно, в целом, ничего плохого в gnu source hightlight на сервере не вижу

> location /board/ {
> proxy_pass http://192.168.0.2:8080/;
ну и нахуя, тебе полноценный встроенный http-сервер в приложение, если у тебя и так уже nginx есть?
получается же хттп-сервер => хттп-сервер => сама борда, дублируешь работу же

> Сервера как обрабатывали запросы 10 лет назад, так и сейчас обрабатывают, что там нового то изобретать?
php3 здесь как пример каши из шаблонов, логики и доступа к данным твои сырцы не смотрел почти, ничего сказать не могу
сейчас у всех на бекенде модульность, сервисы, микросервисы и вся ткакая ебала. все хотят иметь возможность взять свою борду, выкинуть 2к строчек прослойки хттп<==>сервис, написать прослойку смтп<==>сервис и двачевать через почтовый клиент

> Так я больше ничего и не делаю.
> всего около 20к
вот от этого пичот, это и есть единственная проблема, которую я вижу, на самом то деле

> Кресты в этом плане не далеко от жабы ушли по выразительности и лаконичности, щито поделать.
у тебя какие-то другие кресты и какая-то не та жаба

[code]
server.route("POST", "/post", [&](srv::request& r, svr::response& o) -> void {
coolchan::post post = imgboard.add_post(
r.arg<int>("thread_id"),
r.arg<std::string>("post_text"),
r.arg<std::string>("captcha")
// etc.
);
});
[/code]
Аноним 05/04/15 Вск 23:06:05 #345 №459614 
14282643656500.png
>>459611
сука, как на харкаче код вставлять то?
похуй, скриншотом положу
Аноним 05/04/15 Вск 23:08:18 #346 №459616 
>>459614
Да ты издеваешься? Прямо на гланге большими буквами есть ссылка на https://github.com/ololoepepe/MakabaCode/
 Аноним 05/04/15 Вск 23:14:02 #347 №459619 
>>459588
>>459590
1) я поделил промежуток и в фор считаю корень в каждом из них
2) Решить Оду dy/dx=(y-1)/(x+1) y(0)=0
извините что долго, провайдер решил что мне хватит нефти
 Аноним 05/04/15 Вск 23:15:12 #348 №459620 
>>459619
>>459588
точнее поделил на промежуткИИ
Аноним 05/04/15 Вск 23:15:37 #349 №459621 
>>459564
>Code::Blocks
А это что такое. Гуглить не буду, всё равно ничего не пойму. Расскажите про свои ощущения от пользования, что это, зачем и почему.
 Аноним 05/04/15 Вск 23:24:22 #350 №459624 
>>459621
лучше чем dev-c++ и mingw, хоть и очень похож на последний- Интерфейс удачнее, ошибок меньше
Аноним 05/04/15 Вск 23:24:58 #351 №459626 
>>459621
Все хуйня это, не юзай иде в начале пути. Изучи какую-нибудь систему сборки и юзай её + модный редактор
забываю только что написанные функции хедера, при переключении в cpp файл
Аноним 05/04/15 Вск 23:26:43 #352 №459628 
>>459606
Я тоже не знаю почему они должны умереть.
>>459607
Системный - это какой?
Аноним 05/04/15 Вск 23:28:04 #353 №459630 
>>459628
>Системный - это какой?
На котором близкое к железкам ПО пишут, ОС, дрова.
Аноним 05/04/15 Вск 23:29:17 #354 №459631 
>>459630
Я имел ввиду пример какой-нибудь, а не что такое это такое
Аноним 05/04/15 Вск 23:34:15 #355 №459634 
>>459631
Линукс на С, любые дрова, Шиндошс, игры почти все на С++
Аноним 05/04/15 Вск 23:36:23 #356 №459635 
>>459634
Даже небо, даже аллах!
Хоть сейчас появляется тенденция писать на всяких JS и прочем, но в основе этого говна всегда лежит C++. Никуда от этого не деться.
Аноним 05/04/15 Вск 23:41:08 #357 №459636 
>>459635
inb4: мантры долбоеба.
Аноним 05/04/15 Вск 23:50:23 #358 №459637 
>>459620
Бля, я про тебя уже и забыл, мне впадлу разбираться в этой куче кода, поэтому держи набросок на коленке. Проверил матлабом, вроде бы, работает:
http://pastebin.com/jDChREDM
Аноним 06/04/15 Пнд 00:09:04 #359 №459641 
>>459616
блядь, а куда подсветка делать то? была же
возможно это на нульче была, я не помню уже
Аноним 06/04/15 Пнд 00:09:13 #360 №459642 
Написал физзбазз, а тред уже смыло.
[code="c++"]
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
int n = 100;

vector<int> all(n), d3(n), d5(n);

int i = 1;
generate(all.begin(), all.end(), [&i]{ return i++; });

copy_if(all.cbegin(), all.cend(), d3.begin(), [](int x) { return x % 3 == 0; });
copy_if(all.cbegin(), all.cend(), d5.begin(), [](int x) { return x % 5 == 0; });

for (int x : all) {
bool flag = true;
if (find(d3.cbegin(), d3.cend(), x) != d3.cend()) {
cout << "Fizz";
flag = false;
}
if (find(d5.cbegin(), d5.cend(), x) != d5.cend()) {
cout << "Buzz";
flag = false;
}
if (flag) cout << x;
cout << " ";
}

return 0;
}
[/code]
http://ideone.com/Hhz7jh
Аноним 06/04/15 Пнд 00:10:10 #361 №459643 
я даун
[code lang="c++"]
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
int n = 100;

vector<int> all(n), d3(n), d5(n);

int i = 1;
generate(all.begin(), all.end(), [&i]{ return i++; });

copy_if(all.cbegin(), all.cend(), d3.begin(), [](int x) { return x % 3 == 0; });
copy_if(all.cbegin(), all.cend(), d5.begin(), [](int x) { return x % 5 == 0; });

for (int x : all) {
bool flag = true;
if (find(d3.cbegin(), d3.cend(), x) != d3.cend()) {
cout << "Fizz";
flag = false;
}
if (find(d5.cbegin(), d5.cend(), x) != d5.cend()) {
cout << "Buzz";
flag = false;
}
if (flag) cout << x;
cout << " ";
}

return 0;
}
[/code]
Аноним 06/04/15 Пнд 00:10:33 #362 №459644 
>>456726
Запили нумерацию строк в MakabaCode.
А если прикрутишь настройки и внедришь их в диалог настройки двачей, ваще охуенно будет.

////
Кто нибудь смог прикрутить к Opera 12?
Аноним 06/04/15 Пнд 00:31:38 #363 №459655 
>>459644
Ты это кидай на github в раздел issues. Так куда будет удобней.
 Аноним 06/04/15 Пнд 00:40:12 #364 №459659 
>>459637
вроде работает, спасибо, но чем она отличается от моей кроме отсутствия проверки на точность?
Аноним 06/04/15 Пнд 00:55:52 #365 №459667 
>>459659
В твоём коде происходит что-то странное с сеткой и её шагом, здесь же сетка фиксирована, как и предполагается в этом методе.
Пара советов:
1. Читай внимательнее свой код
2. Обзывай переменные как-нибудь внятно, а не a, b, h.
3. Операторы +-*/= бывает полезно разделять запятыми, так код бывает читать проще.
4. Объявляй и инициализируй переменные тогда, когда они действительно начинают использоваться, а не в самом начале.
Аноним 06/04/15 Пнд 01:21:45 #366 №459673 
14282725058180.jpg
Я тут пытался запилить двусвязный список, дошел до пункта обмен двух элементов местами, тут вроде бы все очевидно, поменять стрелочки местами, но тут я столкнулся с ситуацией, когда эти элементы - соседние. Как грамотно реализовать свап без всяких проверок на соседство, разных случаев итд?
Аноним 06/04/15 Пнд 02:39:08 #367 №459705 
>>459673
Neeqaque. Или qaque, но очень через жопу. Стремление всё обобщить - это хорошо, но иногда без обработки edge cases не обойтись.
Аноним 06/04/15 Пнд 03:06:30 #368 №459720 
>>459673
Хули их содержимое просто не менять местами?
Аноним 06/04/15 Пнд 03:17:36 #369 №459721 
Анон, поясни как работает vector в связке с нестандартными классами. То есть, у меня есть желание запилить вектор из элементов не стандартных типов, а описанных мной же классов. Но оно пишет что такое нельзя сделать, ибо нет метода с такими аргументами. Мне забить на вектор и юзать что-то другое, или есть способ совладать? Какой?
Аноним 06/04/15 Пнд 03:19:20 #370 №459722 
>>459721
Штоблядь? Иди шаблоны кури.
[code]
std::vector<MyClass> kek;
kek.push_back(mykek);
[/code]
Аноним 06/04/15 Пнд 03:26:16 #371 №459724 
>>459722
[code]
class line{
...
}
class text{
std::vector<line> entireText;

public:

text(line);

}

text::text(line lineToAdd){
entireText.end(lineToAdd);
}
[/code]
Выдаёт ошибку, говорит, мол, нет перегрузки с такими аргуметами. И да, я что, разве могу прилепить в стд свой метод с шаблонами?
Аноним 06/04/15 Пнд 03:27:34 #372 №459725 
>>459724
\t пару раз случайно приклеился.
Аноним 06/04/15 Пнд 03:36:25 #373 №459726 
>>459721
Отбой, я аутист и читаю жопой описание стдлиба.
Аноним 06/04/15 Пнд 03:53:02 #374 №459728 
>>459721
Нет, лол, нихуя не отбой.
[code]
class line{
...
}
class text{
std::vector<line> entireText;

public:

text(line);

}

text::text(line lineToAdd){
entireText.insert(entireText.end(), lineToAdd);
}
[/code]
Теперь, после выхода из конструктора с параметрами
вылезает рантайм эррор. ЧЯДНТ?
Аноним 06/04/15 Пнд 04:02:52 #375 №459729 
>>459728
И снова отбой, лол.
sageАноним 06/04/15 Пнд 09:27:20 #376 №459747 
>>459611
>проиграл
Хоть запроигрывайся, а картинки вообще-то можно отключать. И весят превью 5-6 КБ, а всякое жуйкуери и другие приблуды в сумме до сотен доходят. Это штук 20 картинок - считай, вся нулевая.
>ну и нахуя
Потому что завтра мамка выкинет мой сервер в коридоре, а настройки nginx я с горя забуду, но борда продолжит спокойно себе работать на рабочем компе, потому что не зависит от этого. Про мамку шутка конечно, но, думаю, кейс понятен.
>модульность, сервисы, микросервисы и вся ткакая ебала
Баззворд на баззворде. У меня просто немного другая архитектура, другая декомпозиция. Модули так или иначе поддерживаются в виде плагинов: фабрика р(о)утов и фабрика досок. Просто не вижу смысла базовую функциональность типа отдачи статики в плагин выносить, поэтому она сразу в коде идет.
>код
Ну ничоссе. Я тоже могу написать
[code lang="cpp"]
dispatcher().assign("/create_post", &ThreadRoute::handlePostCreation, route, 1, 2);
[/code]
Даже короче получилось (так оно в коде и есть, тащем-то, только для общего случая разного количества аргументов). Только вот ни у меня, ни у тебя не описана в примере логика проверки капчи, валидации других параметров, обращения к БД, рендеринга страницы с ошибкой, наконец. Так что не надо тут.
Аноним 06/04/15 Пнд 09:41:58 #377 №459750 
>>459728
должны быть констуктор копирования и оператор присваивание для line
Аноним 06/04/15 Пнд 10:10:06 #378 №459758 
>>456723
няши, помогите пожалуйста решить задачку, ну или хотя бы подскажите алгоритм. В массиве А(N,M) расположить элементы каждой строки в порядке убывания, а сами строки расположить в порядке возрастания сумм их элементов. Указатели на строки.
sageАноним 06/04/15 Пнд 11:08:29 #379 №459782 
>>459758
Насколько помню, для этого нужен рекурсивный драйвер ядра. Придется применить ДДоС атаку на процессор.
sageАноним 06/04/15 Пнд 13:11:58 #380 №459820 
>>459758
А в чем проблема?
sageАноним 06/04/15 Пнд 13:23:43 #381 №459822 
>>459820
В его ДНК.
 Аноним 06/04/15 Пнд 16:41:41 #382 №459936 
>>459667
если интересно, я таки ее добил), спасибо за помощь и советы.
Аноним 06/04/15 Пнд 16:48:14 #383 №459940 
>>459721
Дело точно не в векторе, а что-то не так в описанных тобою классах. Дальше не читал.
sageАноним 06/04/15 Пнд 16:56:49 #384 №459949 
>>459936
Интересно было твою мамашу в очко жарить, а лабы твои не интересны.
Аноним 06/04/15 Пнд 17:01:09 #385 №459952 
>>459758
ну няши, подскажите алгоритм))
sageАноним 06/04/15 Пнд 17:09:31 #386 №459955 
>>459758
>>459952
sortBy (compare `on` sum) . map (reverse . sort)
 Аноним 06/04/15 Пнд 17:24:40 #387 №459960 
>>459949
о пап привет, так ты ж от спида сдох, после того как тебя какой-то тип в шоколадный долбил))))000
Аноним 06/04/15 Пнд 17:25:00 #388 №459961 
>>459955
ну блин((, а можно как-нибудь по-другому?
Аноним 06/04/15 Пнд 17:25:32 #389 №459962 
ololoepepe, скажи с чего Qt начать? Тупо набирать исходники на сайте? Или есть какая-нибудь годнота для ньюфагов?
sageАноним 06/04/15 Пнд 17:29:01 #390 №459963 
>>459960
Ясно, малыш, ясно. Пожалуйся мамочке, она попку кремом смажет, будет не так больно.
sageАноним 06/04/15 Пнд 17:29:49 #391 №459964 
>>459962
>ololoepepe
Это кто? Какая-то новая неймфаго-мразь?
Аноним 06/04/15 Пнд 17:31:37 #392 №459965 
>>459964
Нет, он годный кун. Запилил юзерскрипт, который чинит [code][/code] тэг. Я у него на Github нашел кучу Qt репозиториев. Довольно интересные программы, поэтому и интересуюсь непосредственно у него.
sageАноним 06/04/15 Пнд 17:39:37 #393 №459968 
>>459965
Ну бля, что ж ты намеков то не понимаешь, не надо из меня неймфага делать. Почта же есть, если уж сильно надо, ну.

Бланшет, Саммерфилд. Еще Шлее. У них учебники. Но мне не понравилось, например. Я делал так: брал задачу (на тот момент хотел запилить скачивание картинок с тредов, такой специфический менеджер закачек), пытался сделать, смотрел примеры, гуглил и т.д. Код получался ужасный, но со временем появлялся опыт и код становился лучше. На практике приобретаются знания и навыки, которые никакой учебник не даст.
И еще, очень хорошо будет взять какой-нибудь проект, скажем, в вузике (если ты студент), или даже просто знакомым что-то запилить. Похуй что бесплатно. Ответственность минимальная, но она есть, и это мотивирует, также как и то, что твое поделие кто-то использует, находит баги, реквестит фичи и все такое. Для карьерного роста пользы почти нет, для профессионального - очень даже.
Аноним 06/04/15 Пнд 17:42:14 #394 №459971 
>>459955
Каррирую этого дабла композитора.
Аноним 06/04/15 Пнд 17:54:45 #395 №459978 
>>459968
Да мне просто надо к четвергу запилить GUI. Вернее как. Мой воображаемый дедлайн и тз требуют запилить программку для вузика охуенно, но на деле надо показать довольно простую хуйню.

Надо сделать два окошечка - пикрелейдет.
Первый пик:
Основнок окно. Надо запилить несколько вкладочек, в которых отображать информацию. Достаточно будет тупо текст, на крайний случай таблицы. Туда вся информация должна выводиться.

Второй пик:
Заполнение матриц. Первые два квадрата - две матрицы(т.е. таблицы, которые можно заполнить). Неплохо было бы запилить ресайз.
Последняя колонка всякие конфиги и кнопочки. Тыкаешь кнопку start, и gui сбрасывают в соснольку данные, которая вычисляет и отсылает данные обратно в stdout.
Gui парсят ответ и вкидывают пользователю окошечко с полученным результатом.
Аноним 06/04/15 Пнд 17:55:51 #396 №459979 
14283321510740.png
14283321510741.png
>>459978
Пики отклеились.

>>459968
>Почта же есть
Не видел почты, извиняюсь.
sageАноним 06/04/15 Пнд 18:05:28 #397 №459984 
>>459978
>>459979
Весьма тонкий реквест "сделай мне лабу". Но хуй с тобой.
>несколько вкладочек
QTabWidget
>тупо текст
QPlainTextEdit
>таблицы
QTableWidget
>ресайз
Если ты о ресайзе элементов окна (виджетов), то QLayout и производные от него. Если о ресайзе таблицы, то QTableWidget::setRowCount, QTableWidget::setColumnCount (но, насколько я помню, там еще надо будет в пустые клетки запихать виджеты, лучше погугли).
>всякие конфиги
QFormLayout в помощь.
>кнопку start
Хорошее решение - QDialogButtonBox внизу, на который уже добавляются кнопки QDialogButtonBox::addButton.
>Не видел почты, извиняюсь.
Посмотри в любом README на гитхабе (ну кроме MakabaCode, там не указывал его).
Аноним 06/04/15 Пнд 18:09:29 #398 №459991 
>>456723
подскажите пожалуйста, как расположить строки матрицы в порядке возрастания сумм её элементов, используя указатели>>456723
?
sageАноним 06/04/15 Пнд 18:14:56 #399 №459995 
>>459991
Берешь указатель на строку, считаешь сумму, сравниваешь с суммой другой строки, если надо - меняешь местами.
sageАноним 06/04/15 Пнд 18:29:33 #400 №460003 
[code lang="cpp"]
int main()
{
qsrand(QDateTime::currentMSecsSinceEpoch());
int a = new int *[3];
for (int i = 0; i < 3; ++i) {
a = new int[4];
for (int j = 0; j < 4; ++j)
a[j] = qrand();
}
for (int i = 0; i < 3; ++i)
qDebug() << a[0] << a[1] << a[2] << a[3];
for (int i = 0; i < 2; ++i) {
int s1 = 0;
for (int j = 0; j < 4; ++j)
s1 += a[j];
int s2 = 0;
for (int j = 0; j < 4; ++j)
s2 += a[i + 1][j];
if (s2 < s1)
qSwap(a, a[i + 1]);
}
qDebug() << "===========";
for (int i = 0; i < 3; ++i)
qDebug() << a[0] << a[1] << a[2] << a[3];
return 0;
}
[/code]
Аноним 06/04/15 Пнд 19:25:26 #401 №460033 
14283375264390.jpg
>>456723
Внутри QMainWindow есть QWidget (на кртинке справа), в нем находится QGridLayout (в котором все эти спинбоксы и пара кнопок). Как сделать так, чтобы он притягивался к верхней грани, а не к центру?
sageАноним 06/04/15 Пнд 19:35:58 #402 №460042 
>>460033
[code lang="cpp"]
QWidget w = new QWidget;
QVBoxLayout
vlt = new QVBoxLayout(w);
QGridLayout *glt = new QGridLayout;
vlt->addLayout(glt);
vlt->addStretch();
[/code]
Аноним 06/04/15 Пнд 19:41:20 #403 №460046 
>>460042
Спасибо, работает. Но почему такие костыли? Я думал все должно быть проще, типа alignment или gravity какой-нибудь. Или это я что-то не так делаю и подобный элемент надо пилить по-другому?
Аноним 06/04/15 Пнд 20:13:12 #404 №460076 
>>459984
>Весьма тонкий реквест "сделай мне лабу". Но хуй с тобой.
Было бы неплохо, если бы у нас в вузе были бы лабы по программированию.
Было бы неплохо, если бы у нас в вузе объясняли Qt.
Было бы неплохо, если бы мы писали на крестах.


Олсо, звучит все дохуя сложно. Именно таблицы, особенно. Буду гуглить и доебываться в треде.
Аноним 06/04/15 Пнд 20:16:16 #405 №460080 
>>459995
ну вот допустим посчитана сумма первой строки, куда её занести чтобы она осталась? нужно создавать ещё один массив?
sageАноним 06/04/15 Пнд 20:22:00 #406 №460087 
>>460080
В глаза ебешься? >>460003
sageАноним 06/04/15 Пнд 20:24:31 #407 №460090 
>>460046
Это в ваших говно-хтмлях костыли типа alignment'а, в результате чего в 2015 году нельзя нормально произвольный элемент горизонтально выровнять иначе чем с помощью deprecated-тега <center>. А у нас в Qt все именно так, как и должно быть.
Аноним 06/04/15 Пнд 20:24:45 #408 №460091 
>>460087
да блин, я не понимаю этот код, объясни пожалуйста подробно как этот код работает))
sageАноним 06/04/15 Пнд 20:27:06 #409 №460093 
>>460076
>Было бы неплохо, если бы у нас в вузе были бы лабы по программированию.
У нас были, но на дельфи, уровня "накидай на формочку элементы".
>Было бы неплохо, если бы у нас в вузе объясняли Qt.
У нас не объясняли.
>Было бы неплохо, если бы мы писали на крестах.
Все писали на дельфи, я писал на крестах. Недавно на госах:
- Так, Бов, готов?
- Готов!
- Да ты, Б
ов, всегда готов, можно и не проверять.

Это я к чему: сам учиться не будешь, никакие вузы тебя не научат. Ну и похвастаться какой я у мамы молодец, че уж там.
sageАноним 06/04/15 Пнд 20:28:23 #410 №460095 
>>460091
Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут.
Аноним 06/04/15 Пнд 20:28:42 #411 №460096 
>>460093
Ну вот у меня подобная ситуация на парах. Препод за умного считает, кек.
Аноним 06/04/15 Пнд 20:29:17 #412 №460098 
>>460090
Но я не знаю html!
А gravity это из ведроида. Ведь это было бы более естественно, задаешь куда оно примагничивается, а не создаешь целый новый слой только для того, чтобы он выравнивал куда тебе надо. Да еще и такой непонятной функцией, как addStretch. Если бы я читал такой код, то захотел бы настучать программисту по башке за то, что названия функций не соответствуют тому, что они делают.
Аноним 06/04/15 Пнд 20:30:17 #413 №460100 
>>460095
вот ты юморист))
но я на первом курсе((
sageАноним 06/04/15 Пнд 20:31:19 #414 №460101 
>>460098
>ведроида
Сначала не хотел дальше читать, но потом прочитал, и понял, что не зря не хотел.
Изучи для начала доки, туториалы, потом уже высказывай мнение, ну. "Не как на ведроиде" - это скорее комплимент.
sageАноним 06/04/15 Пнд 20:31:39 #415 №460102 
>>460100
Подожди до второго, осталась пара месяцев.
Аноним 06/04/15 Пнд 20:33:48 #416 №460103 
>>460101
>Изучи какие охуенные мы делаем костыли вместо того, чтобы по-человечески выравнивать элементы.
Ну объясни мне, умник, каким образом addStretch() связана с выравниванием и как я об этом должен догадаться?
sageАноним 06/04/15 Пнд 20:36:57 #417 №460105 
>>460103
Читать документацию надо, и все будет понятно. addStretch добавляет элемент-спэйсер, это удобнее alignment'ов и gravity. Шел бы ты на свой андроид, раз не нравится.
Аноним 06/04/15 Пнд 20:38:12 #418 №460107 
>>460102
ну няша, ну перепиши это решение в более понятном виде))
sageАноним 06/04/15 Пнд 20:40:10 #419 №460109 
>>460107
Не перепишу.
Аноним 06/04/15 Пнд 20:41:42 #420 №460112 
>>460109
почему?:(
sageАноним 06/04/15 Пнд 20:42:01 #421 №460113 
>>460112
Прост))
Аноним 06/04/15 Пнд 20:42:42 #422 №460114 
>>460105
Не надо быть таким нервным. Если ты привык к чему-то это не значит, что это единственно верное и истинное решение.
sageАноним 06/04/15 Пнд 20:43:28 #423 №460115 
>>460114
>Если ты привык к чему-то это не значит, что это единственно верное и истинное решение.
>Ведь это было бы более естественно, задаешь куда оно примагничивается, а не создаешь целый новый слой только для того, чтобы он выравнивал куда тебе надо.
Понятно.
Аноним 06/04/15 Пнд 20:44:18 #424 №460116 
>>460115
Я рад что тебе все понятно.
Аноним 06/04/15 Пнд 21:17:37 #425 №460142 
>>459634
Ты, блять, ебанутый? Я просил пример языка, а не пример продукта.
Ты думаешь что я серьезно не знаю этих вещей?
Аноним 06/04/15 Пнд 21:19:54 #426 №460143 
>>460142
Какой-нибудь новомодный D или Rust
Аноним 06/04/15 Пнд 21:27:47 #427 №460147 
>>460112
Потому что мы тут всей доской заняты групповым изнасилованием всей твоей семьи.
Аноним 06/04/15 Пнд 21:40:44 #428 №460159 
Вопрос на миллион. Как конвертировать std::vector в std::vector<std::vector> ?
Т.е. как преобразовать обычный вектор в двумерную матрицу. Олсо программа должна работать с квадратными матрицами, но надо бы проверочку запилить.
Сейчас я застрял на вопросе - как определить, можно ли вектор преобразовать в квадратную матрицу. Например, если std::vector.size() = 9, то надо построить матрицу 3х3, но если равно, например, 8, то нужно выдать сообщение об ошибке(?)
Аноним 06/04/15 Пнд 21:44:17 #429 №460163 
>>460159
Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут.
Аноним 06/04/15 Пнд 21:44:53 #430 №460164 
>>460159
погугли квадратный корень
sageАноним 06/04/15 Пнд 21:47:12 #431 №460165 
>>460159
Легко.
[code lang="cpp"]
auto matrix = convertToMatrix(vector);
[/code]
Аноним 06/04/15 Пнд 21:47:39 #432 №460166 
>>456723
няши, подскажите способов как можно обратиться к элементам динамического двумерного массива))
и скажите , можно ли обращаться к элементам такого массива таким образом: ((arr+i)+j)?
Аноним 06/04/15 Пнд 21:49:23 #433 №460167 
>>460164
У меня была идея такая, однако дальше вычисления его не ушел.
sqrt(9) = 3 - можно вычислять.
sqrt(8) = 2.82 - идешь нахуй.

И как принимать условие?
if(vector.size() == pow(sqrt(vector.size()), 2))
{//doConvert} else {//doError}

>>460165
>convertToMatrix
Че за метод? Небось опять этот ваш Qt?
sageАноним 06/04/15 Пнд 21:49:47 #434 №460168 
>>460166
[code lang="cpp"]
a[j];
[/code]
sageАноним 06/04/15 Пнд 21:50:34 #435 №460169 
>>460168
Блджад.
http://pastebin.com/Tu7BmK2G
Аноним 06/04/15 Пнд 21:51:11 #436 №460172 
>>460166
Также как и к элементам обычного, в крестах и сишке для обычных массивов a[j] - то же самое что и ((a+i)+j)
sageАноним 06/04/15 Пнд 21:51:16 #437 №460173 
>>460167
Погугли еще что такое сарказм.
Аноним 06/04/15 Пнд 21:54:27 #438 №460175 
>>460173
Лучше бы методы предложил, злодей.
Аноним 06/04/15 Пнд 21:55:25 #439 №460176 
>>460159
Ладно, няша, палю годноту: тебе не нужен вектор векторов, ты можешь просто высчитывать индекс в изначальном векторе
типа v[ i * n + j ]
Аноним 06/04/15 Пнд 22:16:46 #440 №460186 
>>459724
.push_back блеать. Иди читай документацию! www.cplusplus.com/reference/vector/vector/
Аноним 06/04/15 Пнд 22:20:08 #441 №460188 
14283480087290.png
>>456723
няши, подскажите пожалуйста как исправить ошибку:3
sageАноним 06/04/15 Пнд 22:21:39 #442 №460189 
>>460188
Ошибки в ДНК неисправимы.
Аноним 06/04/15 Пнд 22:22:43 #443 №460190 
14283481632380.jpg
>>460188
перепиши это, блядь, немедленно
ты же сам в этом аду не ориентируешься
Аноним 06/04/15 Пнд 22:23:13 #444 №460192 
>>460189
и всё-таки, помоги пожалуйста, в конце-концов я только учусь))
Аноним 06/04/15 Пнд 22:25:27 #445 №460193 
>>460190
http://pastebin.com/CQ3tGk85
вот весь код, помоги пожалуйста)
sageАноним 06/04/15 Пнд 22:28:06 #446 №460194 
Сука, как меня доебал этот смайлопетух. Моча, запрети его нахуй.
Аноним 06/04/15 Пнд 22:30:06 #447 №460195 
>>460188
очевидно, что у тебя слева указатель на инт, а справа инт
sageАноним 06/04/15 Пнд 22:31:50 #448 №460197 
>>460194
Да это шлюха же. Она уже пару лаб тут выпрашивала.
Аноним 06/04/15 Пнд 22:33:15 #449 №460200 
>>460197
Почему я тогда не видел сисек в треде?
Аноним 06/04/15 Пнд 22:39:05 #450 №460206 
>>460197
Я не шлюха
Аноним 06/04/15 Пнд 22:40:44 #451 №460209 
>>460206
Какая разница? Просто съеби.
sageАноним 06/04/15 Пнд 22:46:35 #452 №460215 
>>460197
>Да это шлюха же.
Все, теперь я все понял. Я то думал, как же человек может быть таким тупым и отбитым. Но для шлюхи то это норма.
Аноним 06/04/15 Пнд 23:10:50 #453 №460223 
>>460188
Я вообще боюсь скринов с++. Но даж мне очевидно, что ошибки тебе студия написала прямым текстом. И да. Перепиши. В таком говне и 10 скобочек можно проебать.
Аноним 06/04/15 Пнд 23:11:59 #454 №460224 
>>460188
Тебе, плебей, сраный скрипт написали. Ну или хотя бы обертывай свой код в тэг.
Аноним 06/04/15 Пнд 23:21:57 #455 №460228 
14283517173200.jpg
>>459747
> Баззворд на баззворде
а то

> Модули так или иначе поддерживаются в виде плагинов: фабрика р(о)утов и фабрика досок.
странная у тебя какая-то декомпозиция я бы сказал что ее нет, все пермешано и перепутано
есть же проверенная десятилетиями схема: дал(база, фс) <=> сервис("бизнес логика") <=> вью(хттп а твоем случае)

да еще и на каждый раздел по классу, ну что это за говно?

> dispatcher().assign("/create_post", &ThreadRoute::handlePostCreation, route, 1, 2);
и нихуя не понятно без контекста, что в handlePostCreation такого, что не поместится в 5-10 строк лямбды?
какого хуя тут делает какой-то тред? я хочу писать как в синатре, епт, чтобы все было просто и понятно, чтобы прочитать код мог даже человек с трудом понимающий кресты да и руби тоже
get '/b' { return "wakaba has you, " + params[:username] }

и одиннадцатые кресты это позволяют и им уже, на секундочку, 3.5 года

и никакие оправдания про еблю байт и скорость тут не подходят, ты QString'и конкатенируешь, там malloc вызывается чаще, чем в бэ рулетки крутят, ты в sql базу лезешь (хоть и маленькую и быструю), ты используешь ORM

> логика проверки капчи
> валидации других параметров
сервис проверит и кинет эксепшн. хотя проверять там кроме капчи нечего

> обращения к БД
а что там делать то, тем более с орм?

> рендеринга страницы с ошибкой
нинужно, верхний уровень поймает эксепшн на уровне раута и скажет, что хочет 500, остальное сделает, например, тот же nginx

я все еще не могу понять откуда там СТОЛЬКО кода, в том же sqlite небось раз в пять всего больше
любую твою функцию в 50-100 строк можно сделать размером в два-три-четыре раза меньше
половину классов и методов выкинуть нахуй
и вообще урезать всю борду (даже с ембедед хттп сервером и сервер-сайд подсветкой) до 5к. без ущерба функциональности и читаемости хуже ее здесь не сделать, ящитаю, я минут десять бродил по репе в попытках понять, что же от чего зависит и кем вызывается
Аноним 06/04/15 Пнд 23:24:22 #456 №460229 
Есть 1 класс с чисто виртуальным деструктором и чисто виртуальной функцией, класс этот экспортируется из dll
Когда я наследуюсь от него, то получаю 4 link2019 на дефолтные конструкторы\операторы присваивания и на деструктор.
Что я делаю не так? обоссыте, но не выгоняйте
алсо, интерфейс и класс его реализуемый лежат в двух разных dllaх
Аноним 06/04/15 Пнд 23:25:53 #457 №460231 
>>460229
Там есть правило трёх или пяти, возможно это поможет.
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D1%82%D1%80%D1%91%D1%85_%28C%2B%2B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29
Аноним 06/04/15 Пнд 23:35:28 #458 №460237 
>>460231
Почему же этот вариант http://pastebin.com/aEjsKpMK из библиотеки SFML работает так, как ожидается?
Аноним 06/04/15 Пнд 23:35:48 #459 №460238 
>>460229
http://stackoverflow.com/questions/6633471/dll-export-and-inheritance-in-c
http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL
Аноним 06/04/15 Пнд 23:43:14 #460 №460244 
14283529946110.gif
>>460193
stdout распидоралисо слегка
http://ideone.com/R04o96

1. не используй, блядь, *(arr + i) нотацию
2. не используй, блядь, динамические массивы динамических массивов, если точно не уверен, что надо
3. не используй, блядь, транслит
4. называй, блядь, переменные нормально
Аноним 06/04/15 Пнд 23:47:45 #461 №460248 
>>460229
> чисто виртуальным деструктором
не должно быть такой хуйни, вообще
у всех родителей всегда опустим всякие ебнутые ситуации вызывается деструктор, а это значит, что он обязан быть даже в "интерфейсах"
оптимизатор его, кстати, все равно вырежет нахуй, так что можешь не беспокоиться
Аноним 06/04/15 Пнд 23:49:00 #462 №460249 
>>460237
потому что он не чисто виртуальный, у него есть имплементация, пусть и пустая и никому не нужная
Аноним 07/04/15 Втр 00:06:25 #463 №460259 
>>460248
Знаю про эту хуйню, не знаю почему написал.
В общем проблема осталась
>>460249
Только что проверил - нету
никакой реализации
>>460238
Первая ссылка предлагает сделать мне Construct & Release методы - мне это не нужно
Ну так почему же вот тут все нормально и ожидаемо ? >>460237
алсо, вот щас вынес деструктор помеченный макросом экспорта в cpp файл и все заработало. Почему это произошло?
Аноним 07/04/15 Втр 00:07:43 #464 №460260 
>>460259
>В общем, проблема осталась
Снята проблема, но осталась старая и поднята новая
>Почему вот тут все нормально и ожидаемо ? >>460237
>вынес деструктор помеченный макросом экспорта в cpp файл и все заработало. Почему это произошло?
Аноним 07/04/15 Втр 00:13:01 #465 №460263 
14283547812760.jpg
>>460259
> Только что проверил - нету
> никакой реализации
в глаза ебешься?

> virtual ~Drawable() {}
> {}
Аноним 07/04/15 Втр 00:18:37 #466 №460266 
>>460263
Ну ты серьезно?
Аноним 07/04/15 Втр 01:04:03 #467 №460277 
Бляяядская макаба стерла мой сраный пост!
Ещё раз.

Есть json файл, который содержит кучу объектов, каждый из которых имеет два массива и одно число. Этот файл подается на вход программе и должен быть обработан.

1. Паринг json файла.
Входные данные я преобразовываю так: массивы => vector, int => int. Полученные вектора отправляю в списки. Вот так я храню их, своего рода очередь.

struct Queue
{
std::list<std::vector<double> > matrixA; //список с первыми матрицами
std::list<std::vector<double> > matrixB; //список со вторыми матрицами
std::list<int> precision; //список чисел
unsigned int taskNumber=0; //количество задач всего.
}QueueObj;

Тут возникают сразу же проблемы. Если входных параметров очень много, то жрет дохуя памяти. Олсо только он начинает вычислять, то потребляемая память падает во много раз. Стоит ли просто читать файл частями? Или вовсе начать читать файл каждый раз, когда нужно выполнять следующую задачу?

2. Вот дальше самый пиздец. У меня есть класс, который вычисляет нужные мне значения. То есть есть класс MyClass, который принимает параметры на вход и предоставляет всякие интерфейсы для управления им.

В итоге я пишу что-то вроде

for (int i = Queue.taskNumber; i > 0; --i)
{
/iShit - итераторы списка.
MyClass newTask(iPrecision, buffer, iMatrixB);

newTask.run();

std::vector<double> out = newTask.result();

for (size_t i = 0; i < out.size(); ++i) std::cout << out << std::endl;
}

Я так понимаю, что глупо плодить объекты на каждую задачу? Или вполне нормально, если вычищать их вовремя?

3. Многопоточность. Какие варианты реализации возможны? Я, например, хотел бы сделать отдельный поток, который вычисляет всю парашу, а второй поток общается с первым и примерно сообщает о количестве выполненных операций.



Аноним 07/04/15 Втр 01:05:02 #468 №460278 
>>460277
Блядь, проебался с разметкой. Прошу прощения.
sageАноним 07/04/15 Втр 08:22:47 #469 №460317 
>>460228
>эксепшон
Все, больше мне с тобой говорить не о чем.
Аноним 07/04/15 Втр 10:29:35 #470 №460354 
>>460277
Создаешь класс/структуру для представления объекта - в нем два вектора и число. В одном потоке открываешь файл и читаешь-создаешь по очереди объекты и ложишь их в очередь. Выбираешь какой-то граничный размер очереди, если в очереди находится больше объектов то приостанавливаешь поток на несколько миллисекунд, смотря сколько твои объекты нужно обрабатывать и какой размер очереди (это чтобы очередь не разрасталась до огромных размеров). В другом потоке вытаскиваешь объекты из очереди и обрабатываешь их. В зависимости от характера работы над объектами и системных ресурсов объекты можно вытаскивать и обрабатывать в несколько потоков - конкретное эффективное количество потоков завист от системы, больше не обязательно лучше. Алсо очередь это оперции enqueue и dequeue, то что ты там накалякал это массив. Если будешь делать многопоточность то нужна блокировка на доступ к очереди (это сильно замедлит работу, если объекты обрабатываются быстро) или нужна потокобезопасная неблокирующая очередь.
sageАноним 07/04/15 Втр 11:14:54 #471 №460366 
>>460277
[code lang="cpp"]
class MyClass : public QRunnable
{
//...
void run() { /.../ }
};

MyClass worker;
QThreadPool::start(&worker);
[/code]
И не изобретай велосипед.
Аноним 07/04/15 Втр 11:16:04 #472 №460367 
>>460366
Но ведь я без Qt пилю.
sageАноним 07/04/15 Втр 11:16:08 #473 №460368 
>>460366
Бля, вот так, разумеется:
[code lang="cpp"]
MyClass *worker = new MyClass;
QThreadPool::start(worker);
[/code]
sageАноним 07/04/15 Втр 11:16:30 #474 №460369 
>>460367
>Но я ведь говно ем.
Ну ок.
Аноним 07/04/15 Втр 11:36:21 #475 №460378 
>>456723
>"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Не идут. Держите платиновые вопросы:

1) Как проверить существование директории КРОССПЛАТФОРМЕННО?

2) Как создать директорию КРОССПЛАТФОРМЕННО?

Т.е. никаких вин-апи и прочего. Нужно, чтобы под линуксом, бсд и виндой код работал. Чтобы вы понимали, что вопрос вполне разрешим, приведу пример КРОССПЛАТФОРМЕННОЙ проверки существования файла на C++11 в одну строчку:

bool file_exists(const std::string& filename)
{
return std::ifstream(filename).is_open();
}
sageАноним 07/04/15 Втр 11:41:11 #476 №460380 
>>460378
>Не идут.
Идут.
>Как проверить существование директории КРОССПЛАТФОРМЕННО?
[code lang="cpp"]
QFileInfo("/path/to/dir").isDir();
[/code]
>Как создать директорию КРОССПЛАТФОРМЕННО?
[code lang="cpp"]
QDir::mkpath("/path/to/dir");
[/code]
Аноним 07/04/15 Втр 11:48:06 #477 №460383 
>>460354
>ложишь их в очередь.
Я короче погуглил и нашел std::queue. Пойдет в качестве альтернативы.

Олсо, как писать в очередь? Предположим, что у нас очередь 10 записей. Программа отработала с 5 объектами, очередь нужно пополнить. Как туда это записывать, чтобы все вычислялось правильно?


Теперь за потоки. Как не обосраться? Ведь два потока будут работать с одной очередью, а значит, что один может без проблем прочитать недописанные данные. Как этого избежать?
Блокировать очередь на время пополнения, потом блокировать её на время чтения?
Аноним 07/04/15 Втр 11:51:00 #478 №460384 
>>460383
http://stackoverflow.com/questions/12772227/multi-threaded-global-object-access
Кажется что-то выгуглил.
Аноним 07/04/15 Втр 12:39:04 #479 №460406 
>>460383
> Олсо, как писать в очередь?
Не совсем понятно что тебя смущает. Поток смотрит на размер очереди. Если она больше чем 20 (например) поток засыпает на 1 (например) миллисекунду, если меньше, читает из файла следующий объект и ложит его в очередь, потом все повторяется.
Аноним 07/04/15 Втр 13:05:56 #480 №460426 
>>460406
Так-с. С deque я вроде бы немного разобрался. Теперь как сделать все по уму?
Мне в голову пришла мысль написать класс Queue, что-то типа такого:

[code lang="cpp"]
template <typename T>
class Queue
{
private:
std::deque<T> deque;
public:
void push(T const& value);
T pop();
};
[/code]

И, например, в функции main открывается первый поток, который создает объект типа Queue и начинает оттуда читать данные.
А в основном потоке мы просто храним ссылку на этот же объект, и читаем оттуда. Функция pop возвращает нужную нам структуру обратно и подчищает список. Ну и в этих функция реализован механизм блокировки потоков.
Аноним 07/04/15 Втр 17:44:19 #481 №460582 
Суки блядь, вы еще над AbstractSingletonProxyFactoryBean смеетесь.
# define BOOST_MPL_PP_DEF_PARAMS_TAIL_0(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1 v(),p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v())

Ссылка на это же говно ебучее с подсветочкой синтаксиса
http://pastebin.com/LLPFXaxM

Это еще заебись, там есть макросы, которые и просто конкатенируют(!) текстовые преставления(!!!). И вокруг тимплейтов это наворачивают.

Это не язык программирования, это лексически-синтаксическая ХУИТА.
Аноним 07/04/15 Втр 17:59:43 #482 №460592 
>>460426
Блядь, у меня дико пылает. Просто неимоверная жопная боль от своей тупости.

Короче этот сраный mutex. Хули с ним делать-то??? Прочитал в документации, что он moveable, но не копируемый. Окей. Ебеся дальше.

Вот у меня есть класс Queue, который реализует всю эту блядскую очередь.

[code lang="cpp"]
template <typename T> class Queue{
private:
const unsigned int MAX = 5;
std::deque<T> newQueue;
std::mutex d_mutex;

std::condition_variable d_condition;
public:
void push(T const& value)
{

{
std::unique_lock<std::mutex> lock(this->d_mutex);
newQueue.push_front(value);
}
this->d_condition.notify_one();
}
T pop()
{
std::unique_lock<std::mutex> lock(this->d_mutex);
this->d_condition.wait(lock, [=]{ return !this->newQueue.empty(); });
T rc(std::move(this->newQueue.back()));
this->newQueue.pop_back();
return rc;
}

};
[/code]

Ну и ясное дело, что теперь нужно эту очередь заполнить. Пока что запилил отдельный thread, который этим дерьмом занимается, но тут же лютый обосрамс, блядь. Вот блядь очевидно, что нужно просто передать этот злоебучий объект по ссылке.

Заебашил функцию

[code lang="cpp"]
void buildQueue(Queue<MyStruct> &taskQueue)
{
;
}

//Пишу в main
int main()
{
Queue<MyStruct> tasks;
std::thread t1(buildQueue, tasks);
return 0;
}
[/code]

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

error C2280: 'std::mutex::mutex(const std::mutex &)' : attempting to reference a deleted function;
Че это за говно такое?

Но это ещё говно. Пытается ссылаться на удаленную функцию. Окей, нахуй thread. Пишу
[code lang="cpp"]
buildQueue(tasks);
[/code]

И что происходит? Программа без проблем компилируется, блядь! Что за говно! Почему мои руки настолько из жопы! Помогите решить, блядь.


Аноним 07/04/15 Втр 18:03:52 #483 №460594 
Еще одна жемчужина мысли boost-программиста:
http://pastebin.com/sjUDQt8A

Никаких препроцессоных условных директив там нет, есличо!
Аноним 07/04/15 Втр 18:16:55 #484 №460601 
>>460592
>std::mutex::mutex(const std::mutex &)
Это похоже на конструктор копирования, тоесть твоя очередь таки копируется, попробуй std::ref
sageАноним 07/04/15 Втр 18:28:58 #485 №460613 
>>460582
>boost
Кто бы сомневался. Выкинь это говно.
Аноним 07/04/15 Втр 21:51:33 #486 №460721 
>>460380
Почему? Я же привёл кроссплатформенный способ узнать, существует ли файл, средствами самого языка.
Аноним 07/04/15 Втр 22:09:09 #487 №460733 
>>460721
Разве твой костыль не наебнется на проверке существования файла который закрыт для записи?
sageАноним 07/04/15 Втр 22:54:41 #488 №460751 
>>460721
Во-первых, как правильно заметил >>460733, твой способ говно. Во-вторых, тебе же не файл надо проверить, а папку.
Если совсем уж впадлу использовать библиотеку богов, то хоть посмотри исходники упомянутых мной методов и спизди их.
Аноним 07/04/15 Втр 23:59:33 #489 №460776 
>>460592
Все говно аноны, я починил эту парашу, но это говенная реализация. Пока пердолился, нашел producer-consumer паттерн, но на крестах нет, только на C. Но реализовать дико хочется.

Мультитрединг это так охуенно. Сука! Но страданий дохуя.

Олсо, поясните за строчку:

[code lang="cpp"]
this->d_condition.wait(lock, [=]{ return !this->newQueue.empty(); });
[/code]
Что тут вообще происходит? Ну я знаю, что это ламда функция, которая возвращает указатель(?). А что дальше происходит?


Ещё охуительный вопрос.
Мой люкссофт создает 3 матрицы и 1 число, которое нужно поместить в документ .tex. Ясно дело, что там должны быть и другие данные. Типа заголовок, настройки файла и т.д.
Какие способы писать в файл есть? Сейчас я просто топорно пишу нужные мне строки в пустой файл.
sageАноним 08/04/15 Срд 08:55:24 #490 №460870 
>>460776
>Ну я знаю, что это ламда функция, которая возвращает указатель(?).
Проиграл с тебя. Она возвращает true, если очередь не пуста, и false, если пуста.
Соответственно, если возвращается false (очередь пуста), то блокировки не происходит.
Аноним 08/04/15 Срд 10:58:48 #491 №460915 
Хочу для души попрогать на крестах. С последним стандартом, с бустом, со всеми прикольными штуками, короч.
Что мне надо накатить? (Желательно, для винды)
Аноним 08/04/15 Срд 11:00:20 #492 №460918 
>>460915
MSVS Express и 100 gramm dlja dushi
Аноним 08/04/15 Срд 12:26:35 #493 №460939 
>>460870
[code lang="cpp"]
this->d_condition.wait(lock, [=]{ return !this->newQueue.empty(); });
[/code]
А что тогда в этой строке происходит?
Аноним 08/04/15 Срд 13:29:01 #494 №460966 
>>460939
Тред ждёт выполнение условия из лямбды, после чего лочится переданный std::unique_lock.
sageАноним 08/04/15 Срд 13:54:38 #495 №460974 
>>460966
Еблан что ли? Доки читайhttp://www.cplusplus.com/reference/condition_variable/condition_variable/wait/
Если предикат вернет false, блокировки не произойдет. Нихуя оно не ждет.
Аноним 08/04/15 Срд 14:37:07 #496 №460985 
>>460733
С чего это он наебнётся? Я делаю проверку на возможность чтения, а не записи.

>>460751
Не наебнётся же, читай выше. Или может наебнуться? Как?

Ну и да, почему Qt, а не буст?
sageАноним 08/04/15 Срд 15:09:14 #497 №460999 
>>460985
Потому что буст - некрасивое говно. Но для данного случая вообще похуй откуда брать исходники, так что хоть из wxWidgets, если так нравится кушать какашки.
Аноним 08/04/15 Срд 15:49:25 #498 №461011 
>>456723
Не буду пинать труп Qt-треда, спрошу здесь:
Допустим, у меня есть QGrphicsScene, в которой лежит несколько айтемов, один из которых QGraphicsPixmapItem. Есть ли в Qt стандартные способы узнать в какой из пикселей этого пиксмапа я тыкнул мышкой, учитывая что этот айтем может менять масштаб (setScale()), а сцена лежит в QGraphicsView, который в свою очередь имеет скроллбары.
sageАноним 08/04/15 Срд 16:00:39 #499 №461013 
>>461011
Можно, но ебано весьма. Сначала определяешь, по какому итему тыкнули, потом находишь его координаты во вьюхе с учетом всяких скроллбаров (вроде видимая часть называется вьюпорт, вот относительно него надо высчитывать), потом сравниваешь с точкой, куда ткнули. Естественно, учитываешь масштаб (алгоритм сам придумай, там несложно, но мне лениво).
Аноним 08/04/15 Срд 16:09:46 #500 №461018 
>>461013
Ок, спасибо. Я тут подумал, наверное лучше будет наследоваться от QGraphicsScene и перехватывать всякие QGraphicsSceneMouseEvent. В них вроде есть вся инфа (pos, scenePos, screenPos). Но это опять же куча гемора.
sageАноним 08/04/15 Срд 16:50:02 #501 №461033 
>>461018
Используй QObject::eventFilter, нахуя от сцены то наследоваться. В любом случае тебе придется вычислять все мной выше перечисленное, способ перехвата события нажатия мыши с вычислением никак не связан.
Аноним 08/04/15 Срд 21:19:40 #502 №461209 
Давайте ещё раз поясняем мне за жизнь.

[code lang="cpp"]
void push(T const& value)
{

{ //Нахуя эти скобочки?
//Выжидаем, когда mutex разлочится и залочить его самостоятельно.
std::unique_lock<std::mutex> lock(this->d_mutex);

//Залочили и пишем в очередь.
newQueue.push_front(value);
}
//Сообщаем ожидающему треду.
this->d_condition.notify_one();
}
T pop()
{
//Блочим mutex
std::unique_lock<std::mutex> lock(this->d_mutex);
//Передаем его в wait, который высвобождает mutex и приостанавливает поток, пока условие не будет выполнено.
this->d_condition.wait(lock, [=]{ return !this->newQueue.empty(); });
//копируем
T rc(std::move(this->newQueue.back()));

//чистим
this->newQueue.pop_back();
return rc;
}
[/code]
sageАноним 08/04/15 Срд 21:43:36 #503 №461238 
>>461209
>Нахуя эти скобочки?
Блок в скобках - скоуп. Когда выходим из скоупа, все что в нем объявлено на стеке - удаляется. То есть будет вызван деструктор переменной lock и она больше не будет доступна. btw, лок это нечто типа паттерна - объект, лочащий мьютекс и разлочивающий при разрушении. Удобно, когда неизвестно, где будет выход из скоупа. В данном случае - варварский костыль, здесь бы хватило и простого лок\анлок.
Аноним 08/04/15 Срд 21:57:56 #504 №461247 
>>461238
А про остальное написал описал нормально? Просто не до конца вгоняю в концепцию.

Олсо, нагуглил вот этот T rc(std::move..). Что это вообще за конструкция?

Там на место T идет моя структура, но что это вообще такое?
sageАноним 08/04/15 Срд 22:09:16 #505 №461256 
>>461247
>Передаем его в wait
Ты лок передаешь туда, а не мьютекс. И еще, я тебе уже писал, но ты в глаза ебешься:
>Еблан что ли? Доки читай http://www.cplusplus.com/reference/condition_variable/condition_variable/wait/
>Если предикат вернет false, блокировки не произойдет. Нихуя оно не ждет.
>Нихуя оно не ждет. Предикат выполняется сразу при вызове wait, и в зависимости от него wait либо будет ждать, либо моментально разлочит мьютекс.
Далее.
>std::move
Гугли lvalue, rvalue. Если сложно, то забей пока на это байтоебское говно, оно в 99.99999% задач нахуй не всралось.
А вообще у тебя какой-то говнокод, но это с опытом приходит, ничего.
Аноним 08/04/15 Срд 22:24:18 #506 №461261 
>>461256
>Ты лок передаешь туда,
А что такое lock по своей сущности, лол?

Да я весь вечер охуваю. Сначала писал, вроде бы, нормально получалось. Лег спать. Открываю с утра - ЛЮТЫЙ ГОВНОКОД. Сегодня дописывал - плакал. Надо будет зарефакторить.
sageАноним 08/04/15 Срд 22:37:15 #507 №461267 
>>461261
>А что такое lock по своей сущности, лол?
Ну пиздец, ты читаешь вообще ответы, нет?
>btw, лок это нечто типа паттерна - объект, лочащий мьютекс и разлочивающий при разрушении.
Обертка над мьютексом это. Если ты передашь его в wait, то сначала соответствующий мьютекс разблочит wait, а потом его попытается разблочить сам лок при выходе их скоупа, и твоя параша весело наебнется.
sageАноним 08/04/15 Срд 22:37:51 #508 №461268 
>>461267
>из
фикс
Аноним 09/04/15 Чтв 12:09:14 #509 №461448 
>>460999
1) Таки я не понял,
>Разве твой костыль не наебнется на проверке существования файла который закрыт для записи?

Наебнётся мой костыль или нет? Не должен же: я проверяю, имеется ли возможность открыть файл на чтение. На мой взгляд, это равносильно проверке на его существование.

Можно ли туда писать или нет, меня не интересует. Меня интересует, существует файл или нет.

2) Хорошо, хочу спиздить исходники. Помоги дауну в этом. Вот имеется код.

>QFileInfo("/path/to/dir").isDir();
>QDir::mkpath("/path/to/dir");

Гуглим.
http://cep.xray.aps.anl.gov/software/qt4-x11-4.2.2-browser/d0/de9/qfileinfo_8cpp-source.html

isDir находится один раз
mkpath вообще ни разу

Что нужно вообще спизидить? Как спизженное будет выглядеть целиком? Помоги дауну.
sageАноним 09/04/15 Чтв 12:34:50 #510 №461457 
>>461448
>я проверяю, имеется ли возможность открыть файл на чтение. На мой взгляд, это равносильно проверке на его существование.
Не равносильно. Файл может существовать, но у тебя при этом может не быть прав на его чтение. Хотя вряд ли сперморебенок с таким сталкивался.
>Что нужно вообще спизидить? Как спизженное будет выглядеть целиком?
Неудивительно, что ты не нашел, там гора кода, много обращений к внутренним классам и тд. Так что походу не проктит. В гугле за первую минуту решения я тоже не нашел. Так что или кури доки по всем платформам и пиши велосипед, или пытайся гуглить с призрачной надеждой на успех, или кончай страдать хуйней и используй предназначенные для этого инструменты.
Аноним 09/04/15 Чтв 12:41:33 #511 №461459 
>>461457
>Файл может существовать, но у тебя при этом может не быть прав на его чтение.
Согласен.

>или кончай страдать хуйней и используй предназначенные для этого инструменты
По ходу, это. А я так не хотел...
Аноним 09/04/15 Чтв 12:54:50 #512 №461463 
>>461459
> А я так не хотел
>>456723
> Вопросы "Как мне сделать Х без библиотек" идут на хуй.
Аноним 09/04/15 Чтв 13:04:07 #513 №461464 
>>461463
Мне всего-то что нужно, проверить существование файла и папки. Всё остальное у меня велосипед. Ради этого прикреплять мощную библиотеку...
Аноним 09/04/15 Чтв 14:00:56 #514 №461480 
>>461464
Используй Boost.Filesystem и только его.
Аноним 09/04/15 Чтв 14:01:31 #515 №461481 
>>461464
Вообще ты тут ломаешься раз в 1000 дольше, чем писал бы.
Аноним 09/04/15 Чтв 14:06:23 #516 №461486 
>>461480
Вот я тоже склоняюсь к бусту.

>>461481
...one of the most highly regarded and expertly designed C++ library projects in the world.
— Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Нахера мне твоя Qt?
Аноним 09/04/15 Чтв 14:10:21 #517 №461491 
>>461486
Когда ты писать съебёшь наконец?
Аноним 09/04/15 Чтв 14:25:06 #518 №461507 
>>461491
Не могу нагуглить, как библиотеку в Visual Studio подключить. Самому копаться лень, вот и гуглю.
sageАноним 09/04/15 Чтв 15:18:03 #519 №461531 
Пиздец, клован, просто уебывай писать на пхп, кресты не для таких даунов.
Аноним 09/04/15 Чтв 18:51:36 #520 №461616 
>>461531
Обожаю, когда твой пердак улетает на орбиту. Это бесценно. Ты вообще единственный, кого я тут узнаю. Я просто тред бампаю.
sageАноним 09/04/15 Чтв 19:07:25 #521 №461623 
>>461616
Не хочу разрушать твою иллюзию, но мне просто доставляет поносить даунов, смешивать их с говном.
Аноним 10/04/15 Птн 01:08:31 #522 №461792 
>>461623
Нет, тебя просто узнать по саже и кьютам, теперь ты саже-куто-кун.
sageАноним 10/04/15 Птн 08:53:37 #523 №461844 
>>461792
С этим я и не спорю, но ответ в силе.
Аноним 10/04/15 Птн 10:23:48 #524 №461851 
Поймите и примите как факт, что наделаете ошибок. Задача в том, чтобы найти их рано, пока они не попали в продакшн. Слава богу, в нашей индустрии, за исключением ребят из Лаборатории реактивного движения НАСА, которые делают софт для управления ракетами, ошибки обычно несмертельны. Мы можем и должны учиться, смеяться и продолжать работу.

Ваш код — не вы. Помните, что вся суть проверки кода в том, чтобы найти ошибки, и они обязательно найдутся. Не воспринимайте как личное оскорбление, когда это случится.

Не важно, насколько вы прокачанный спец. Кто-нибудь всегда знает больше, и у него можно поучиться. Стоит только попросить. Ищите и принимайте то, что говорят другие, особенно когда кажется, что это вам не нужно.

Не переписывайте код без консультации. Есть тонкая грань между «поправить код» и «переписать код». Почувствуйте разницу и преследуйте изменения стиля в рамках штатной проверки кода, а не как одинокий рейнджер.

Относитесь к людям, которые знают меньше вас, с уважением, почтением и терпением. Люди, напрямую не связанные с IT, но которым часто приходится иметь дело с разработчиками, считают нас в лучшем случае зазнайками, а в худшем — нытиками. Не кормите стереотипы гневом и нетерпеливостью.

Единственное, что в мире постоянно — это перемены. Будьте готовы к переменам и принимайте их с улыбкой. Взгляните на изменения в требованиях, платформе или инструменте как на вызов, а не как на неудобство, которое надо побороть.

Единственный истинный авторитет дают знания, а не положение. Знание порождает авторитет, а авторитет порождает уважение. Хотите уважения в среде, где нет места эго — культивируйте знания.

Боритесь за то, во что верите, но непринужденно признавайте поражение. Поймите, что иногда ваши идеи будут отклонять. Даже если вы и правы, не надо мстить и говорить «А я предупреждал, что так будет». Никогда не превращайте отвергнутые идеи в мученический стон или боевой клич.

Не становитесь «тем кодером в углу». Не будьте человеком в темном кабинете, который выходит только за колой. Кодера в углу не видно, с ним сложно связаться, его сложно контролировать. У такого человека нет голоса в открытой, кооперативной среде. Включайтесь в беседы и будьте частью сообщества своего офиса.

Критикуйте код, а не людей. Будьте добры к людям, но не к коду. Насколько возможно, пишите позитивные комментарии, направленные на улучшение кода. Свяжите комментарии с принятым в команде стандартом кода, техзаданием, повышением производительности и т.д.
sageАноним 10/04/15 Птн 11:00:10 #525 №461857 
Поймите и примите тот факт, что наделаете в разы меньше ошибок, чем те дауны-ньюфаги с анонимного форума. Задача в том, чтобы обоссать их рано, пока их не взяли на работу. Слава богу, в нашей индустрии, за исключением ребят из 10Б, которые делают софт для сжатия интернета до размеров одной флешки, ошибки стоят денег и проебанного времени пользователя. Мы можем и должны учиться, смеяться и продолжать обоссывать даунов.

Ваш код - это вы. Помните, что вся суть проверки кода в том, чтобы найти ошибки, и они обязательно найдутся. Воспринимайте как собственную некомпетентность, когда это случится.

Не важно, насколько вы прокачанный спец по нытью на сосаче. Любой ваш одногруппник знает больше, но учить он вас не будет. Не стоит даже просить. Ищите и принимайте то, что пишут в гугле, особенно когда кажется, что проще спросить на сосаче.

Переписывайте код без консультации. Есть тонкая грань между "писать код" и "ныть на сосаче". Почувствуйте разницу и пойдите уже работать над проектом, а не засоряйте доску своими даунскими вопросами по синтаксису.

Относитесь к людям, который знают больше вас, с уважением, почтением и терпением. Люди, напрямую не связанные с IT, но которым часто приходится иметь дело с разработчиками, являются тупыми гуманитариями и могут сосать хуй, их мнение никого не интересует. Кормите их говном и сажей.

Единственное, что в мире постоянно - это ежедневный прирост числа дегенератов. Будьте готовы к наплыву дегенератов и принимайте их с сажей. Взгляните на деградацию доски, вопросы по синтаксису и "как взломать вконтакте" как на вызов, а не как на неудобство, которое надо побороть.

Единственный истинный авторитет дает опыт написания программ, а не кукареканье о кластерах метапарадигм. Написание программ порождает уверенность в своих силах, а уверенность порождает спокойствие. Спокойствие в среде, где полно мамкиных тралей - залог здоровья вашей жопы.

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

Не становитесь "тем кодером в углу". Вы уже давно им стали. Не будьте человеком в темном кабинете, который выходит только за колой (ведь можно заказать колу прямо в кабинет). Кодера в углу не видно, с ним сложно связываться, его сложно контролировать. А нам только этого и надо. У такого человека нет голоса в открытой петушиной среде, но все равно чуть что все бегут к нему. Игнорируйте социоблядей и ссыте на них.

Критикуйте и код, и людей. Будьте добры к людям, но не к дегенератам. Насколько возможно, пишите комментарии, отправляющие дауненка в гугл. Свяжите комментарии с принятым на доске стандартом унижать долбоебов, ебать их мамаш, сестер и т.д.
Аноним 10/04/15 Птн 12:03:51 #526 №461878 
Анон с хуевой реализацией Producer–consumer вкатился снова. Я чуток приболел и поэтому вчера ничего не писал. В целом я ту программу закончил - она работает. Однако там поле не паханное - надо с памятью разобраться, реализацию паттерна заебашить хорошую, закомментировать все, добавить GUI и много ещё чего.

Однако разработка этой программы надоела. Стоит ли доводить проект до конца (новых знаний там прибавится более чем дохуя), либо браться за что-нибудь другое?
sageАноним 10/04/15 Птн 12:14:11 #527 №461884 
>>461878
Тут два стула. Либо ты бросаешь это говно и начинаешь что-то более полезное, либо доводишь до конца, несмотря на то что это бесполезный калич. В первом случае ты не тратишь время на ковыряние в говне, но привыкаешь забрасывать проекты, во втором - учишься доводить работу до конца, но занимаешься неинтересным и нинужным делом, что тоже хуево. Если же программа нужная и интересная, просто тебе лень - то тут без вариантов: только доводить до конца, иначе так и будешь факториалы всю жизнь писать.
Аноним 10/04/15 Птн 12:29:23 #528 №461893 
>>461884
Ну программа нахуй никому не всралась даже мне, однако как я уже выше много технических деталей смогу из неё вытащить. Я сейчас поаутизировал и пришел к выводу, что нужно продолжать пилить её и использовать в качестве полигона для тестов всяких новых фич.

Олсо, поясните за чистку памяти. inb4: используй smart_ptr; Я как-то не особо понимаю, когда надо вычищать память, а когда нет. Есть какой-нибудь гайд?
sageАноним 10/04/15 Птн 12:58:05 #529 №461910 
>>461893
Ну я обычно стараюсь доделать хотя бы какой-то запланированный минимум, сильно задрачивать говно не стоит.

Память надо освобождать, когда она выделена в куче (heap), то есть при помощи new (malloc на рассматриваю, ибо байтоебское ненужное говно). Когда ты больше не используешь выделенную память (скажем, класс, который выполнял какую-то операцию, отработал), то надо ее освободить, то бишь вызвать delete. Умные указатели сильно упрощают задачу, но в сложных проектах там тоже могут возникать всякие нюансы, типа перекрестный ссылок (тут используют костыль под названием weak pointer). А вот что пишут на СО http://stackoverflow.com/questions/76796/memory-management-in-c Но по мне, так эта ебля с RAII - еще большие костыли, выразительность падает ниже уровня жабы (хотя казалось бы, как такое возможно).
Аноним 10/04/15 Птн 13:13:37 #530 №461912 
>>461844
Он не я, если что.

>>461910
>Qt >бустофоб >байтофоб
Скоро мы будем знать про тебя всё.
sageАноним 10/04/15 Птн 13:23:59 #531 №461916 
>>461912
При чем тут -фоб или не -фоб? Зачем использовать буст с его уродливыми названиями и мешаниной нэймспейсов, если есть красивый и приятный Qt? Зачем ебаться с байтами, когда на дворе 2015 год, и даже самый обоссанный китайский телефон на порядок мощнее моего первого компьютера, тянувшего 3д игры на максималках в свое время? Это все просто нинужно в большинстве случаев. Но остается еще "меньшинство случаев", я прекрасно понимаю, что там это все может потребоваться. Но никак не в лаба_2.
Аноним 10/04/15 Птн 20:08:55 #532 №462135 
>>461910
>malloc на рассматриваю
Ну и дурак. Placement new - одна из самых крутых фич плюсов.
sageАноним 10/04/15 Птн 20:32:13 #533 №462144 
>>462135
Ну и где это применяется на практике? В паре особо требовательных к производительности библиотек да в ядрах каких-нибудь, и все.
Аноним 10/04/15 Птн 20:50:20 #534 №462156 
>>462144
>Ну и где это применяется на практике?
В самописных контейнерах.
Аноним 10/04/15 Птн 20:53:36 #535 №462159 
>>462144
> кудкудах кампюктиры мощьные можна говнокодить
Добавьте это тоже в ОП пост с пометкой "нахуй".
sageАноним 10/04/15 Птн 21:00:13 #536 №462162 
>>462159
>говнокодить
>не ебаться с байтами == говнокодить
У меня для тебя плохие новости.
sageАноним 10/04/15 Птн 21:00:38 #537 №462163 
>>462156
В велосипедах на лабах, короче. Ясно.
Аноним 10/04/15 Птн 21:20:40 #538 №462170 
>>462163
И это говорит человек, работающий в универе за еду.
sageАноним 10/04/15 Птн 21:24:08 #539 №462173 
>>462170
Поправочка: ничего не делающий и получающий за это какие-никакие, а копейки. Хотя скоро диплом, и отмазки больше не прокатят, но может что еще придумаю.
Аноним 10/04/15 Птн 21:33:03 #540 №462174 
>>462173
Начнешь нормально работать, поймешь, что самописные контейнеры - не такая уж и редкость.
Аноним 10/04/15 Птн 21:38:57 #541 №462177 
Вопросы за оптимизацию. Олсо, дедлай прошел, поэтому могу уже спокойно обмазываться и дописывать, как душе угодно.
>>461910 – заставил задуматься. Почитал всякие доки и понял, что дико обосрался в одном месте.
>>461916 – Я сейчас пишу в академических целях. У меня дико печет от того, что я не понимаю, как некоторые вещи работают, поэтому стараюсь писать настолько низко, насколько это понимаю. Но в тоже время чтобы это было интересно.
Задача: На вход подается матрица, матрица, и число. На выходе должен быть сгенерирован файл в формате pdf с матрица, матрица, список, число.

Вопросов, конечно, ещё дохуя, но я самые такие базовые спрошу, которые не дают мне покоя. В частности прошу уделить дохуя внимания памяти, ибо я не все понимаю и чую, что где-то насрано. Также не надо писать "пиши на Qt", "smart_ptr" и тому подобное. Пока я хочу поебаться на некотором low-level, чтобы понять что к чему. Потом перепишу, а может быть и заброшу. Хуй знает.

Олсо, почему C такой популярный, а C++ не очень? Останусь ли я без работы, если буду ебаться только с плюсовыми фичами?


1. Моя программа течет, блядь. Она сжирает около 200 мб на 175 задач. Или это было на 100 000 задач, не помню. Что дохуя и меня дико раздражает. Каждая задача описывается 4 свойствами:
[code lang="cpp"]
std::vector<double> //чаще всего не больше 20 элементов
std::vector<double>; //чаще всего 4 элемента.
std::list<std::vector<double> > storedIterations; //обычно от 15 до 30 векторов по 3-4 элемента.
unsigned int precision; //редко больше 15;
[/code]

Естественно уж больно дохуя памяти выделается и программа работасет TO SLOW!!

Следовательно, есть ли смысл запилить шаблон для структуры? Задачи чаще всего приходят в формате int, реже в float. Double ещё ни разу не было. Вычисления же должны происходить довольно точно. Но редко в задаче устанавливаются слишком большая точность.
2. Задачи приходят из JSON парсера, который создает объект и тупо его перебирает, извлекая нужные значения в цикле. Отсюда и главный вопрос – как засунуть объект в очередь?
Сейчас у меня это довольно ебануто реализовано.
[code lang="cpp"]
for (size_t i = 0; i < tasks.size(); ++i)
{
TaskMeta TaskMetaObj;

json& task = tasks;
TaskMetaObj.matrixA = task["matrixA"].as<std::vector<double> >();
TaskMetaObj.matrixB = task["matrixB"].as<std::vector<double>>();
TaskMetaObj.precision = task["precision"].as<unsigned int>();

taskQueue.push(TaskMetaObj);

}
[/code]

В частности я не понимаю поведение в строчке TaskMeta TaskMetaObj. Ведь таким образом менеджмент памяти будет автоматически производиться, и как только очередь вытащит этот элемент и выполнит удаление, то этот объект будет разрушен?
[code lang="cpp"]
T rc(std::move(this->newQueue.back()));
this->newQueue.pop_back();
return rc;
[/code]
Или нужно создавать этот объект через new и самому вычищать его? Суть в том, что по факту надо протащить этот объект через всю программу, модифицировав его только в одном поле.
Программа использует только два первых вектора и число для вычислений, а в список уже заносит полученные данные, которые печатаются. В результате программа тащит через себя вот это все говно. Я не уверен, что это эффективно.

Ещё есть задумка, чтобы писать в очередь сразу по нескольку объектов. То есть парсер вытаскивает данные из файла, считаем, например, до 10 объектов и кидаем их в очередь, а потом пробуем ещё раз. Если в момент чтения к очереди обращались, то мы опять забиваем на неё и читаем что-нибудь ещё, и пробуем обратиться ещё раз.

3. Как организовать класс с вычислениями? Сейчас у меня есть класс, который принимает ссылочку на структуру Class object(const Task& obj); В конструкторе распихивает данные по своим свойствам и производит манипуляции. Возможности сделать члены класса статическими нет, так как между собой функции обменивают большим количеством промежуточных данных.
Что-то вроде
[code lang="cpp"]
TaksMeta task;
Calc taskCalc;
Loop{
task = Queue.Pop() //забираем из очереди
taskCalc (task)//вычисляем
Queue2.pop(taskCalc.result());
]
[/code]
Как в таком случае быть с памятью? Удалять ли каждый раз объект taskCalc? Или он тут раз за разом перезаписывается?
4. Запись в файл. У меня сейчас крайне тупой алгоритм:
a) Создать новый файл.
b) Записать в него заголовок LaTeX файла.
c) В цикле брать из очереди все обсчитанные задачи.
d) Дописывать их крайне топорно в файл
e) Если очередь закончилась, то завершить файл и передать файл на компиляцию.
А я хочу запилить класс, который будет годной оберткой для LaTeX.
file.usepackage->table //сгенерирует \usepackage{table}\n
file.add(“bmatrix”)->vector(std::vector<double>); //\begin{bmatrix} 1&2&3\end{bmatirx}
Это будет куда лучше? В частности документ будет на порядок чище, однако теперь про работу с этим файлом. Я пишу в него заголовок и начинаю дергать объекты из очереди на запись. Документ должен быть сформирован уже сразу “заголовок”+”тело”+”конец”, или можно просто запилить заголовок, дописывать в тело, а потом уже дописать конец файла.
И ещё. Предположим, что задача у нас очень большая, обсчет занял много времени, а очередь с ответами пустует. Стоит ли закрывать в таком случае файл?
1. Открыл файл ->Дописал решение->закрыл файл-> … -> дописал конец файл
2. Открыл файл->Дописал решение->дописал решение->дописал решение->..->дописал конец файла->закрыл файл.

sageАноним 10/04/15 Птн 21:41:03 #542 №462180 
>>462174
Все может быть, я ж сужу на основании того, что знаю сейчас. Хотя вряд ли мне понравится работать байтоебом (не как что-то плохое, чисто субъективно).
Аноним 10/04/15 Птн 21:52:36 #543 №462188 
>>462180
>Хотя вряд ли мне понравится работать байтоебом
Кодинг на С++ - это почти всегда байтоебство. Иди в джаву или сишарп.
sageАноним 10/04/15 Птн 21:54:46 #544 №462190 
>>462177
>Останусь ли я без работы, если буду ебаться только с плюсовыми фичами?
>Останусь ли я без работы, если буду ебаться только с плюсовыми фичами?
Суди сам http://hh.ru/search/vacancy?text=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82+c%2B%2B
>течет
>сжирает
Это тащем-то две большие разницы. Течет это когда у тебя память не освобождается и указатель на нее проебывается.
У тебя объект создается на стеке, затем, при помещении в вектор, он копируется (там место под него выделяется динамически, то есть new/malloc, но вектор за этим сам следит). При удалении элемента из вектора/удалении самого вектора объект(ы) удаляются. То есть все ОК.
>Ещё есть задумка, чтобы писать в очередь сразу по нескольку объектов.
Нахуя?
>Удалять ли каждый раз объект taskCalc? Или он тут раз за разом перезаписывается?
Объект создается на стеке, память сама очищается при выходе из скоупа. Ничего удалять не надо (более того, если попробуешь руками удалить, будет сегфолт).
>Это будет куда лучше?
Без понятия. Что ты хочешь этим достичь? Вывод в файл буферизован, так что быстрее не будет.
>Стоит ли закрывать в таком случае файл?
Не стоит по двум причинам: 1. Нахуя? 2. Открытие файла требует времени, при закрытии файла все еще не записанные данные записываются, что тоже требует времени, даже если там всего 1 байт остался.
Алсо, что касается скорости, везде, где идет большое количество добавлений элементов в вектор, замени его на лист. А лучше вообще навсегда забудь про вектор, почти всегда лист будет быстрее (вектор быстрее только когда ты заранее знаешь количество элементов и создаешь вектор нужного размера).
И еще, выражай мысли лаконичнее, это пиздец все это читать.
sageАноним 10/04/15 Птн 21:59:00 #545 №462193 
>>462188
Нихуя. С кьютом никакого байтоебства почти, ну кроме памяти. Хотя память это скорее такой челлендж, лол, а с умными указателями даже и челленджа нет.
Жабу успел поюзать, когда еще нормально начинал работать, больше не хочу. Язык хороший, но фреймворки с этой аннотационно-XMLной дрисней заставляют блевать перманентно. Шарп - нет, ибо привязка к сперме. Корявые поделки для пинуса, в которых на каждом миллиметре подводные камни нинужны, а официально еще когда портируют, когда отладят. Ну нахуй. Немало языков я попробовал, но только кресты понравились.
sageАноним 11/04/15 Суб 15:51:48 #546 №462443 
В QImageWriter есть метод setCompression(int compression), но я никак не могу найти где описаны комбинации format/compression type для этой функции. Там приведен всего один пример с tiff. Кто-нибудь знает где это можно найти?
Аноним 11/04/15 Суб 15:52:11 #547 №462444 
>>462443
Сажа прилипла.
Аноним 11/04/15 Суб 16:21:48 #548 №462454 
>>462443
лол, странно, что они этого не описали.
ну список поддерживаемых форматов можно получить через supportedImageFormats(), а вот типы компрессоров хз, попробуй посмотри в исходниках, функция write вызывает
if (d->handler->supportsOption(QImageIOHandler::CompressionRatio))
d->handler->setOption(QImageIOHandler::CompressionRatio, d->compression);

так что лезь в qimageiohandler.cpp
sageАноним 11/04/15 Суб 17:17:53 #549 №462471 
>>462443
Поидее, раз ты используешь определенный формат, то должен знать, какие уровни сжатия он поддерживает. Qt тут ни при чем. Хотя, конечно, если бы они это написали, были бы еще охуеннее.
Аноним 11/04/15 Суб 19:02:15 #550 №462493 
>>462471
Не, ну там же высокоуровневая обертка над ним (соответствующий плагин) и этот setCompression принимает в себя какой-то индекс. Как я, даже зная все поддерживаемые методы сжатия, могу определить какой индекс чему соответствует? В общем, хваленая документация Qt дала тут слабину.
sageАноним 11/04/15 Суб 20:15:00 #551 №462526 
>>462493
Ты тупой? Допустим, формат жпег поддерживает 100 разных степеней сжатия, по количеству процентов. А формат йоба поддерживает три варианта сжатия: 0, 1, 2 (без сжатия, среднее сжатие, охуенное сжатие). Это от кьюта никак не зависит, а зависит только от самого формата.
Аноним 11/04/15 Суб 20:17:03 #552 №462528 
>>462526
Нет, это ты, видимо тупой. Qt реализует плагины для записи/чтения этих файлов, конвертируя степени сжатия в свои какие-то индексы. Где документация по этим стандартным плагинам? Да нету ее нихуя!
sageАноним 11/04/15 Суб 20:18:32 #553 №462529 
>>462526
Поясню еще: не зависит потому, что кьют, внезапно, использует 3rd party библиотеки для работы с форматами изображений. Для каждого формата имеется спецификация, в которой указано, какие могут быть варианты сжатия. Библиотеки, разумеется, следуют этим спецификациям. Кьют - всего лишь обертка в данном случае. Если сказано в спеках, что фаормат такой-то поддерживает столько-то степеней сжатия, то число в этих пределах и указывай.
sageАноним 11/04/15 Суб 20:18:57 #554 №462530 
>>462528
>>462529
sageАноним 11/04/15 Суб 20:20:44 #555 №462531 
Для пнг и жпг, если правильно помню, сжатие идет от 0 до 100.
Аноним 11/04/15 Суб 20:22:42 #556 №462533 
>>462529
Да я тебя, блять и спрашиваю, КАК он конвертирует эти форматы сжатия в свои индексы? КАК он это обертывает? КАКОЙ мне нужно поставить индек чтобы для PNG получить RLE сжатие? В спеке PNG не написано как там какой-то Qt его использует. В 3rd party библиотеках не знают под каким номером Qt поставит то или иное сжатие.Че ты мне загоняешь прописные истины? Где мне найти таблицу соответствия (file format:encoding alg)/Qt index?
Аноним 11/04/15 Суб 20:24:06 #557 №462534 
Собираюсь переписывать свою недоочередь. Какие предложения есть, чтобы было познавательно, но в тоже время не 0 уровень байтоебства и пригодилось бы на работе\собеседовании?
sageАноним 11/04/15 Суб 20:28:18 #558 №462537 
14287732982430.png
>>462533
Первая ссылка в гугле: http://optipng.sourceforge.net/pngtech/optipng.html
sageАноним 11/04/15 Суб 20:31:52 #559 №462540 
>>462534
>байтоебства
>пригодилось бы на работе
Выбери одно. А если сурьезно, то загугли очередь, только чтоб там описание алгоритма было, без кода. Почитай, вникни, реализуй.
Аноним 11/04/15 Суб 20:34:33 #560 №462542 
>>462540
А именно очередь или паттерн проектирование Producer–consumer?
sageАноним 11/04/15 Суб 20:37:18 #561 №462543 
>>462542
Ты меня спрашиваешь? Хочешь очередь - делай очередь. Хочешь производитель-потребитель - делай его. Но в последнем случае довольно сложно реализовать какой-то общий, универсальный контейнер или алгоритм, обычно такие вещи реализует каждый под свои нужды.
Аноним 11/04/15 Суб 20:37:52 #562 №462544 
>>462537
Так все же, почему это нигде не отражено в документации Qt?
Все-таки они основаны на этих библиотеках и было бы правильно описать на чем основывается параметр для каждого конкретного СТАНДАРТНОГО случая.
sageАноним 11/04/15 Суб 20:38:32 #563 №462546 
14287739125270.png
>>462537
Впрочем, можешь не пытаться, пикрелейтед. Хинт: такой опции в кьютовом пнг вообще нет. Ну, я тоже могу обосраться, не без этого.
sageАноним 11/04/15 Суб 20:39:36 #564 №462547 
>>462544
Видимо, не успели, забыли, посчитали что нинужно. С таким то объемом документации не удивительно.
Аноним 11/04/15 Суб 21:10:22 #565 №462558 
Вот как так получается? Всякие люксофты платят хотя бы 20к стажеру, а вот йоба Московский банк платить ничего не хочет.
Вопрос номер два? Какого хуя такие вакансии вообще существуют?
http://career.ru/vacancy/13214717?query=C%2B%2B
Аноним 11/04/15 Суб 21:12:09 #566 №462559 
http://career.ru/vacancy/13097189?query=C%2B%2B
>Приглашаются студенты 4-5 курсов, выпускники, начинающие специалисты ТЕХНИЧЕСКИХ ВУЗОВ для прохождения стажировки с возможностью дальнейшего трудоустройства
> ТЕХНИЧЕСКИХ ВУЗОВ
Пок-пок, образование не важно
Аноним 11/04/15 Суб 21:15:52 #567 №462564 
Что-то полистал вакансии - припекло. Не найду я работу, походу.
Аноним 11/04/15 Суб 21:23:04 #568 №462569 
>>462559
Перевожу с копроративного на человеческий
> студенты / начинающие специалисты
готов работать за копеечку
> 4-5 курсов, выпускники
но въебывать будь добр на полную катушку
> ТЕХНИЧЕСКИХ ВУЗОВ
О Госпади да всем насрать. Главное чтобы количество твоих знаний бесполезной поебени из IT области пересеченное со знаниями бесполезной поебени того кто будет проводить допрос превышало некий критический порог.
Аноним 11/04/15 Суб 21:25:48 #569 №462575 
Мне тут скинул список того, что я должен знать, чтобы задуматься о том, чтобы пойти на собеседование. Список нормальный? Что ещё можно добавить?

это знание студии, знание стандарта 2003, знание 50% стандарта 11, знание стл, основные контейнеры, сложность операций, зачем каджый контейнер, знание исключений, знание неопределнного поведения, знание плюсового ооп, хотя бы до уровня виртуального наследования, понимать зачем нужны виртуальные деструкторы и вкак вообще работает рантаймовый даункаст (виртуальные методы)

понимание многопоточки, и основных примитивов синхронизации. атомики, мьютексы, критические секции, и их гуарды
в связи с гуардом понимать что такое раии

плюс стандартные паттерны обсервер, мвц, стратегия, понимать порядок иницилиазации, понимать как работает выделение памяти, большой плюс, если знаешь что-то о шаблонах, большой плюс если знаешь примерно как это работает на уровне ассемблера всё, не плюс, а просто необходимо знать все типы кастов
статик динамик реинтерпрет конст и си-стайл каст, знать когда и как их использовать, вот пожалуй и всё, что надо знать джуниору

на самом деле не очень много
и быть готовым что собеседующий обязтельно спросить свою любиму задачу не потеме, типа есть кабель из москвы в австралию с таким-то каналом, за сколько пройдет пакет в мегабайт, и там не проебаться со скоростью света, или быть готовым ответить на то, сколько комбинаций выпадает на шестигранных кубиках с повторениями и без

вот в таком духе
а по техническим соотв быть готовым к виртуальным деструкторам, почему нельзя использовать ауто_птр, и сотни других
Аноним 11/04/15 Суб 21:41:25 #570 №462584 
>>462575
нормальный. если все из списка будешь знать на джуниорскую с++ изи попадешь.
Аноним 11/04/15 Суб 21:41:57 #571 №462586 
>>462558
лол, припекло чет. какого хуя они о себе думают вообще.
Аноним 11/04/15 Суб 21:43:09 #572 №462587 
>>462584
Ну так-то дохуя. Но я уже знакомые слова тут вижу и примерно понимаю для чего тут и что надо.
Аноним 11/04/15 Суб 21:50:44 #573 №462592 
>>462587
ну да, дохуя, но на самом деле 90% этого есть в любой хорошей книге по с++.
а так, если будешь все это понимать уверенней же в себе сам будешь.
и еще я бы к списку добавил Qt, boost, Win Api хотя бы на уровне "подключал, запускал пару функций".
Это из требований к чистым плюсовикам.
Аноним 11/04/15 Суб 21:52:29 #574 №462593 
>>462592
Ну вот из Boost юзал тут недавно. Да и QT. Да и на WinApiшных сокетах чатик писал.
Аноним 11/04/15 Суб 22:40:19 #575 №462615 
>>462546
Да в общем-то там нигде, кроме TIFF, сжатие и не поддерживается. Ну что за говно.
sageАноним 11/04/15 Суб 22:42:53 #576 №462618 
>>462615
Qt все-таки не про работу с изображениями. Поддерживает базовые возможности и норм. Читает то нормально, и ладно.
Аноним 11/04/15 Суб 23:04:53 #577 №462625 
Почему sort() не сортирует вектор? http://pastebin.com/PJZHQwKN
Аноним 11/04/15 Суб 23:33:20 #578 №462632 
>>462625
Проверь как работает operator< с твоими строками, вообще он должен лексографически сравнивать и все должно быть ок, но больше что-то нихуя не приходит в голову. Попробуй версию sort с тремя параметрами.
Аноним 11/04/15 Суб 23:59:41 #579 №462636 
14287859812330.png
>>462632
Пиздец, ебаный c++, нихуя не пойму, что ему надо-то?
Аноним 12/04/15 Вск 00:19:16 #580 №462637 
>>462636
На стаковерфлов разжевали, оказывается при создании вектора через stream-ы всё распидорашивало. http://pastebin.com/MPMRk4vV заменил на это. В C++ всё через жопу, блядь.
Аноним 12/04/15 Вск 00:50:59 #581 №462642 
14287890598650.jpg
>>456723
Есть у меня например N векторов, и N пар (Ai, Bi). Есть еще функция, принимающая X, и вычисляющая некоторое значение используя оператор[] на этом X.
Вопрос: Как получить какой то обьект, который бы связал все значения N векторов в один X, так чтобы он "состоял из"
V1[A1], V1[A1+1],...,V1[V1], V2[A2], V2[A2+1], ..., V2[B2], ... Vn[An], Vn[An+1],...,Vn[Bn]
Без копирования, естественно.
Аноним 12/04/15 Вск 01:01:50 #582 №462646 
Перекот-то кто-нибудь пилить будут?
Аноним 12/04/15 Вск 10:06:04 #583 №462713 
>>462646
Пускай официальный -sage-Qt-ОП-хуй пилит.
sageАноним 12/04/15 Вск 10:16:16 #584 №462715 
>>462637
Просто ты не используешь нормальные библиотеки типа Qt или хотя бы boost, где вся эта еблся с байтами красиво обернута и работает как надо.
sageАноним 12/04/15 Вск 10:19:13 #585 №462716 
>>462642
Сломал мозг, читая это математическое говно. Давай на примере с числами.
sageАноним 12/04/15 Вск 10:23:38 #586 №462719 
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
Новый итт-трендель: https://2ch.hk/pr/res/462718.html
comments powered by Disqus

Отзывы и предложения