[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Первые 100 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 17424)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP размером до 10000 кБ.
  • Ныне 3041 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
  • ">
150783928026.png-(881.78KB, 720×720, junior_developer_elma.png)
17424
No. 17424 watch    
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

Пополняемая база знаний: http://pastebin.com/AGhLZppH

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

Другие тематические нити: (не стесняйтесь их поднимать)
Java: >>/dev/13949
Python: >>/dev/14767
Rust: >>/dev/16152
RenPy: >>/dev/14429

Примеры кода лучше выкладывать в виде ссылок на http://pastebin.com или http://ideone.com
Фронтендные вещи лучше выкладывать на http://jsfiddle.net

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

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

Если здесь поселится достаточное количество программистов на одном языке / одной сферы, можно будет их выделить в отдельную нить, а в этом оставить на него ссылку.
По мере поступления вопросов можно составлять FAQ и базу знаний.

Архив нитей:
http://410chan.org/dev/arch/res/14160.html
http://410chan.org/dev/arch/res/15681.html

Прошлая нить пока тонет тут: >>/dev/15861
Развернуть все изображения
No. 17433    
В процессе систематизация прошлой нити для пополнения базы знаний.
No. 17442    
Некоторая обобщенная информация из прошлой нити:

>Хочу перекатиться в бэкенд, десктоп или девопс из около-embedded
>>/dev/17045

>Хочу задачи и упражнения по алгоритмам (C, Python)
>>/dev/17105
>>/dev/17108
>>/dev/17110

>Хочу в HTML и CSS
>>/dev/17404

>Хочу вводный курс по C / C++
>>/dev/15966

>Хочу интерактивный курс по Python
>>/dev/16126

>Предложите альтернативу Python для парсеров и скриптов
>>/dev/15833

>Подскажите книги по Perl 6
>>/dev/15703

>Подскажите книгу про многопоточные сетевые приложения с POSIX API
>>/dev/17195

>Не отображаются тумбнейлы на локальной Wakaba
>>/dev/16891
No. 17443    
150801393010.png-(530.47KB, 600×800, photo5406869797507016779.png)
17443
Ребята, читаю TCPL и это так сложно, у меня каша в голове, а я только до поинтеров дошёл.
No. 17444    
Для ссылок внутри доски /dev/ указывать необязательно.
No. 17445    
>>17443
Ты упражнения делаешь?
No. 17449    
>>17445
Да, но читаю сильно вперёд.
No. 17453    
>>17449
Сильно вперёд чего? Упражнений? Если да, то лучше так не делать, а порешать ещё упражнений до тех пор, когда всё изученное хотя бы стройно выстроится в голове. Если никак не выходит, то не переусердствуй: возможно, дальше будет этот материал понять проще.
Но главное в обучении не просто читать, а применять на практике, помни.
No. 17455    
здесь случаем нет людей, знакомых с апи этого сайта https://www.themoviedb.org/documentation/api ?
No. 17457    
>>17455
Конкретно с этим API не знаком, но выглядит достаточно прямолинейно: https://developers.themoviedb.org/3/getting-started
https://developers.themoviedb.org/3/getting-started/authentication
https://developers.themoviedb.org/3/authentication/how-do-i-generate-a-session-id

С чем у тебя возникла проблема?
No. 17458    
>>17457
здесь есть лимит по реквестам 40 на 10 секунд. но даже после минуты после превышения лимита информация по фильмам не подгружается только после перезагрузки страницы может получиться
не могу понять эту систему с лимитом
No. 17460    
>>17458
>перезагрузка страницы иногда помогает
А откуда ты тыкаешь их API? Если это браузер или фреймворк на базе безголового браузера, то ты мог попасть на кеширование AJAX-запросов. поведение похоже на твой случай
No. 17461    
>>17460
https://developers.themoviedb.org/3/getting-started/request-rate-limiting
Ну и да, официальная спека божится, что таймаут 9 секунд максимум.
No. 17462    
150820201518.png-(522.84KB, 1366×728, 2017-10-17_03-47-28.png)
17462
>>17460
> А откуда ты тыкаешь их API?
браузер. я на сишарп вебапи сделал один метод гет, в котором использую апи того сайта
> ты мог попасть на кеширование AJAX-запросов
не понял что это значит, но я подгружаю фильмы аджаксом, да...

можешь сам сайт посмотреть, если хочешь http://movievote.azurewebsites.net/. проблема появляется, когда по страничкам переходишь
ну и еще я для каждого фильма до 3 реквестов отправляю
No. 17463    
>>17462
Я провел эксперимент - наперезагружал главную страницу несколько раз до того момента пока она стабильно перестанет подгружать информацию и одновременно с этим мониторил состояние отдаваемой информации по одному фильму:
http://movievote.azurewebsites.net/api/MovieInfo/42

>status_message "Your request count (135) is over the allowed limit of 40."
>status_message "Your request count (218) is over the allowed limit of 40."
>status_message "Your request count (187) is over the allowed limit of 40."

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

Тебе нужно проверить, сколько запросов ты на самом деле туда отправляешь, потому что на вид выходит так, что ты сильно перекрываешь их разрешенный поток, из-за чего создается ощущение что таймаут не проходит а на самом деле ты его просто тут же выбираешь Возможно, придется реализовать программный circuit braker и устроить общение с внешним апи через него.
No. 17465    
Хранить json-строки в реляционной базе mysql - нормально или за такое сразу отрывают руки?
No. 17466    
>>17465
мне такое в прошлом треде делать предлагали, а здесь плохого не посоветуют
No. 17467    
>>17463
а можешь на сам гет метод посмотреть, пожалуйста? вот https://pastebin.com/4PPxFShB
вообще, я вебапи и парсинг джейсона плохо понимаю, может из-за этого сделал ошибку где-то
No. 17468    
>>17465
>>17466
Ну, во-первых MySQL уже даже поддерживает такой тип данных:
https://dev.mysql.com/doc/refman/5.7/en/json.html

Во-вторых, всё зависит от обстоятельств и того как устроен твой проект. Технически у тебя будет просто таблица ключ-документ. И я не вижу в этом ничего плохого. Плохое или хорошее можно будет увидеть, когда станет ясно как это будет использоваться.
Конечно, если тебе от базы не нужно реляционной части вообще, и просто страшно использовать NoSQL, типа MongoDB, то можно пожурить тебя за то что лень разобраться
No. 17469    
150826317266.png-(112.86KB, 1680×680, Безымянный.png)
17469
>>17467
Если я правильно понял, то этот твой гет-метод запускается каждый раз при обращении к /api/MovieInfo/ххх. Если это так, то проблема у тебя в архитектуре, поскольку на каждое обновление главной твой сервер 9 раз дергает апи TMDB что им быстро надоедает. Информация при этом загружается относительно статичная. Кешируй ее на своем сервере, и обновляй по расписанию, а не при каждом обращении. И возможно не обязательно грузить ее сразу, раз она отображается только при нажатии.
No. 17470    
>>17468
Про поддержку знаю, я скорее имел ввиду теоретическую правильность. Принципы проектирования БД требует стремиться к атомарности данных, а json ее нарушает. Если говорить о конкретной задаче, то мне надо хранить сведения об объектах разных типов, причем у каждого типа свой набор сведений. Из альтернатив я вижу либо по таблице на каждый тип (придется писать кучу кода для добавления/изменения/удаления самих таблиц и столбцов), либо две таблицы (в одной id объектов, в другой id, имя свойства, значение). Оба подхода мне не очень нравятся.
В общем, раз в принципе json нормально использовать таким образом, сделаю и я так, спасибо.
No. 17471    
>>17470
>Если говорить о конкретной задаче, то мне надо хранить сведения об объектах разных типов, причем у каждого типа свой набор сведений.

Да, это как раз то для чего обычно хранят данные в "документах". Так что если нет реляционных кусков вообще, можешь использовать mongo, а если нужна какая-то реляционная работа, то храни это у себя под боком в MySQL.
No. 17472    
>>17467
>>17469
Не ругая сам код Если захочешь - поругаю код тоже

Я бы предложил:
1. Не спрашивать информацию сразу для трех локалей, а спрашивать только для текущей локали пользователя.

2. Как заметил >>17469 можно добавить кеширование успешных запросов на своей стороне, но тут есть много способов это делать. Можно сделать просто кэш на стороне сервера, можно сделать супер простой кеш в коде (но тебе надо как-то его инвалидировать и обновлять, плюс он будет отъедать оперативку). Можно пойти дальше и сделать как делают многие скрепперные сайты: сделать чтобы твой сайт брал информацию про фильмы из твоей БД, а уже в эту БД их складывал второй компонент - краулер/скреппер. Этот компонент может работать как периодически, так и реактивно, аккуратно опрашивая чужое API по всем их правилам и медленно, но верно, заполняя базу.

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

3. Можно реализовать circuit braker, который сразу начнет отсекать запросы по превышению лимита. И пропускать их когда пройдет таймаут.

4. Можно вместо этого написать простой rate limiter - т.е. компонент с очередью, который будет выполнять запросы из этой очереди и подсчитывать в реальном времени, с каким рейтом он обрабатывает запросы, если рейт превышен, то запрос повисит пока не пройдет таймаут. Можно разрешить ему выполнять N запросов одновременно.

Недостатки у этих методов - как только лимит выберется, будет создаваться ощущение что сайт тормозит.
No. 17473    
>>17469
> Кешируй ее на своем сервере
пока не знаю что это. мне в этом направлении смотреть https://metanit.com/sharp/mvc5/20.1.php ?

>>17472
> Если захочешь - поругаю код тоже
хочу
> 1. Не спрашивать информацию сразу для трех локалей, а спрашивать только для текущей локали пользователя.
здесь я для себя просто приоритеты расставил ua>ru>us, так как, можно сказать, это мой личный сайт для меня. попробую оставить только одну локаль для поиска, все равно она только на описание влияет и на постер иногда
> краулер/скреппер
что это такое?
> аккуратно опрашивая чужое API по всем их правилам и медленно, но верно, заполняя базу
как я понял, ты предлагаешь периодически тянуть информацию из их апи в собственную базу и обновлять периодически? если да, то так не получится ибо у меня база размером всего 32мб
> 3.
> 4.
у них вроде через апи можно запросить инфу о том, когда запросы снова станут доступны после превышения лимита

вообще, главная проблема в том, что после проклацивания по страничкам и использования этого лимита - ничего не подгружается даже через пару минут и вообще сайт начинает зависать. может я с логикой где-то напартачил, нужно смотреть
No. 17474    
150827987726.png-(99.65KB, 1366×728, 2017-10-18_01-28-48.png)
17474
>>17469
я тоже перешел на эту вкладку с запросами и мне мало что понятно, но вот эти вызовы Page?page=1 и время ожидания меня немного напрягают. это нормально? если нет, то проблема, скорее всего, где-то в длаваскрипте, да?
No. 17475    
>>17469
>>17474
>>17473
черт, ребят, я все понял. после перехода на следующую страницу я заново инициализирую кнопки перехода по страничкам, то есть та же самая функция выполняется +1 раз после прокликивания
No. 17478    
>>17473
>Вообще, главная проблема в том, что после проклацивания по страничкам и использования этого лимита - ничего не подгружается даже через пару минут и вообще сайт начинает зависать. может я с логикой где-то напартачил, нужно смотреть

Попробуй тогда самую простую проверку. Сделай в своем коде так, чтобы если не проходил первый запрос 429 код ошибки они присылают, то не начинались все остальные. Посмотри что будет и сообщай о результатах.
No. 17479    
>>17473
Да, ты можешь сделать кеширование таким образом, тебе подойдет кеш на сервере. Однако это все равно не очень хорошо, поскольку нагрузка на апи хотя и снизится, но останется зависимой от посетителей и непредсказуемой. Правильно будет обращаться к апи по расписанию, соблюдая частоту запросов, и сохранять данные в свою БД, а из неё отдавать клиентам, как сказал >>17472.
32 МБ должно хватить надолго, тем более если тебе нужна не вся инфа, которую отдаёт апи.
No. 17490    
можно ли сделать так, чтобы мое сишарп приложение с функцией автозапуска свертывалось в трей при запуске компьютера? при этом, если запустить его через ярлык, например, то открывается сразу окно

есть ли какой-то универсальный способ или нужно делать какие-то костыльные счетчики?
No. 17491    
>>17490
В автозапуск суешь приложение с параметром.
Приложение.ехе -минмизед
, например. На старте проверяешь этот аргумент запуска. Проблема решена.

Алсо, позаботься о том, чтобы при запуске с ярлыка приложение не дублировало процесс вдобавок к автозапущенному.
No. 17492    
>>17491
спасибо, попробую
No. 17495    
существует ли плагин для браузера желательно хром, который позволял бы получить все джаваскрипт события выбранного хтмл-элемента?
No. 17496    
Расскажите о движке Ычана, пожалуйста,
вообще что-то я в последнее время чувствую какое-то нездоровое влечение к технологиям начала/серидины нулевых.
No. 17497    
>>17495
Для хрома, к сожалению не подскажу.
А для FF есть FireBug, к которому есть дополнение EventBug, которое кажется делает то, что ты хочешь.
No. 17498    
>>17496
Насколько мне известно, Ычан использует почти стандартный движок Wakaba Mark. Написан на Perl. Устроен так просто, что кажется, что его без труда можно самому написать за месяц.

Лучше всего знакомится сразу через исходный код:
https://github.com/hades/wakaba

Также некоторые проблемы с его установкой разбирались в этой нити >>16891
No. 17499    
>>17498
> движок Wakaba Mark
>Mark
Это разметка.
No. 17500    
>>17473
>> Если захочешь - поругаю код тоже
> хочу

Больших претензии две:
1. Копипаста кода. Для трех запросов ты три раза скопировал код. Понятно, что поначалу так было быстрее, но вообще нужно вынести в отдельные методы подготовку запроса, непосредственную отправку запроса с получением результата, обработку возможного бана от чужого API. Оно и дебажить будет проще, потому что вместо трех мест для программистской ошибки на каждую операцию будет всего одно.

Вот почему бы не вынести это в отдельный метод, куда параметрами идут RestClient и реквест?

            var json = JObject.Parse(clientUA.Execute(request).Content);
            if (json["total_results"] == null)
                return json;
            if (json["total_results"].Value<int>() > 0)
            {
                if (json["results"][0]["overview"].Value<string>() != "")
                    return json;
            }

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

2. Неправильная работа с URL. Сейчас ты клеишь урли кусочками строк, потому что тебе так было быстрее. Не надо так делать, это тоже возможное место для беды. Конечно, в сишарпе не очень удобные стандартные средства для работы с урлами: https://stackoverflow.com/a/14517976

Но зачем стандартные, если можно подключить удобные внешние?
https://github.com/EasyHttp/EasyHttp
No. 17501    
>>17499
Сорри, слово-паразит.
No. 17502    
>>17500
спасибо большое за советы, для меня это важно
> https://github.com/EasyHttp/EasyHttp
ты предлагаешь формировать урл-строку для запроса апи с помощью методов этой либы?
я просмотрел вики, но немного запутался... если тебя не затруднит, сформируй, пожалуйста, эту строку с помощью этой библиотеки:
https://api.themoviedb.org/3/search/{data.Extras}?page=1&query={data.Name}&api_key={key}
No. 17523    
>>17502
К сожалению у этой либы есть недостаток - кажется она не поддерживает PATH-параметры одновременно с Query String параметрами. Поэтому, если хочешь сделать именно с ней, то нужно будет расплодить константы эндпоинтов на возможные варианты data.Extras можно конечно и по старинке их вставлять в строку, но это кажется немного не безопасно
Вообще они предлагают создавать query string как-то так:

http.Get("https://api.themoviedb.org/3/search/my_extras_endpoint", new {page = 1, query = data.Name, api_key = key})

Подробнее можно почитать тут: https://github.com/EasyHttp/EasyHttp/wiki/Get
No. 17532    
>>17424
Есть программа на си. Компилируется gcc без предупреждений, но сегфолтится после считывания x.
Пожалуйста подскажите мне, какие опции gcc надо загуглить для тестирования этой програмки.
[code]
// Number 1
#include <stdio.h>
int main(void)
{
char c;
int x,y;
printf("Пoжалуйста введите значение x ");
scanf("%d", x);
printf("\n%d", x);
if (x<0)
y=x*x+1;
else if (x>1)
y=0;
else if ((x<1) && (x>0))
y=x+1;
printf("\ny = %d\n",y);

return 0;
}
[/code]
No. 17534    
>>17532
Версия gcc 7.2, версия glibc 2.25
No. 17536    
>>17532
scanf надо передавать адрес переменной.
scanf("%d", &x);

No. 17538    
>>17536
Спасибо.
No. 17544    
>>17523
сложно как-то. пытался использовать эту библиотеку, но получается странно. вебапи по запросу выдает ошибки на сервере, хотя на сайт информация подгружается НО не всегда вся... такие дела. и еще из-за динамических объектов придется ограждать код трай-кетчами
я лучше разберусь с либой, которую использовал RestSharp. там вроде тоже можно урл-строку с параметрами по-умному формировать и все такое

вот то что написал пока пробовал, если интересно: https://pastebin.com/HJ6U8i4s
No. 17564    
какие есть материалы по разработке архитектуры для большого проекта? хочу сделать большое приложение игру для разных платформ с поддержкой онлайн функционала базы данных, все такое.
при этом хочется все-все продумать сначала, порисовать юмл и распланировать разработку в каких-нибудь скрамах, после чего уже браться за разработку. вот только не знаю как это все лучше сделать, чтоб разработка проходила гладко
No. 17566    
>>17564
http://macode.ru/ Ничего лучше не придумали, всё остальное - хуита для обмазывания отчётиками начальства и заказчика.
No. 17567    
>>17566
я когда делал одну игру - прямо так и сделал, сел и начал писать код не имея в голове точно представления как оно все будет сделано вместе. в итоге, после нескольких недель мусоливания одной фичи дропнул разработку так и не сделав особо ничего, хотя планы на счет игры были ого-го

поэтому сейчас хочу как-то подготовиться
No. 17568    
>>17564
>материалы
Есть дисциплина, софтваге инжиниринг называется. А так: UML для дизайна, аджайл для конкретных фич, >>17566 для всего остального
No. 17571    
150897129647.jpg-(82.15KB, 700×867, images.jpg)
17571
>>17564
>>17567
Держи, например, пикрелейтед:
https://gamifique.files.wordpress.com/2011/11/6-game-architecture-and-design-a-new-edition.pdf

Есть материалы по software architecture, и тут в приниципе я тебя могу проконсультировать, но есть одно но: привычная ООП-архитектура хорошо будет годиться для, например, твоей сетевой инфраструктуры, но очень быстро окажется что она мало годиться для реализации игровых сущностей и механик. В основном потому что один из принципов ООП - инкапсуляция, мало совместим с тем, что для интересной игровой механики какой-то из объектов в игре должен взять что угодно у чего угодно, или вообще спросить что-то у движка игры, а привычный ООП подход такому всячески препятствует.
No. 17572    
>>17571
>а привычный ООП подход такому всячески препятствует
Это почему еще?
No. 17573    
>>17571
А как хорошо в эту схему ложится Rust, в котором нет ООП?
No. 17574    
>>17572
В какой-то мере он прав. Большой движок слишком сложен, чтобы просто взять и сделать оптимальную архитектуру с этим вашим ООП. Поэтому делают так хорошо, как только могут, а потом начинают прикручивать скриптинг и прочую компонентно-ориентированность, чтобы этим можно было пользоваться.
No. 17575    
>>17573
Ты с Go не путаешь?
No. 17577    
>>17575
Может и не путает. Я вот такое откопал.
>There are many competing definitions for what OOP is: under some definitions, Rust is object-oriented; under other definitions, Rust is not.
https://doc.rust-lang.org/book/second-edition/ch17-00-oop.html
No. 17578    
>>17571
> Держи, например, пикрелейтед
спасибо, полистаю
> я тебя могу проконсультировать
круто! буду обращаться
> ООП-архитектура мало годиться для реализации игровых сущностей и механик
я планирую сделать игру-редактор японских кроссвордов и здесь вроде ничего особо сложно нету - тыкаешь по клеточкам да и все

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

кстати, выложил редактор, который я делал на винформах в прошлом году https://github.com/aenen/prr. Здесь редактор работает, а игровая часть не доделана. Я буду отталкиваться от него, делая свою новую игру-рудактор и мне очень хотелось бы услышать критику и советы в адрес того, что я там сделал, воть

и да, думаю, мне понадобится какая-то c# библиотека игровой движок для создания 2D игр, которая бы хорошо подошла именно для этих кроссвордов-картинок, которые я буду делать. может кто знает что подходящее?
No. 17579    
>>17578
>движок для создания картинок
libpng. Всё остальное оверкилл.
No. 17580    
150910888699.png-(10.57KB, 451×461, panda_fond_prirodi_12_1_1p.png)
17580
>>17579
> движок для создания картинок
> кроссвордов-картинок
я имел в виду для игры - "кроссворд-картинка" это "японский кроссворд". чтоб графические элементы там отображать и можно было с ними взаимодействовать тыкать по ним
No. 17583    
150922396976.jpg-(297.49KB, 1023×1472, 1490497962963.jpg)
17583
>>17578
>выложил редактор, который я делал на винформах в прошлом году
>хотелось бы услышать критику и советы в адрес того, что я там сделал
>public LevelMode Type { get; set; } //цветной или ч/б
Плохие названия же.
LevelMode
лучше назвать
LevelColorPalette
, или вроде того.
Type
туда же. И если там всего 2 способа отрисовки всегда будет, то лучше просто
bool isMonochrome
. И зачем оно
public
, если используется только в конструкторе и методах этого класа? inb4 сериализация. Это для сериализации в xml только публичные поля годятся, а для binary пойдут и приватные.
Можешь попробовать использовать шаблон проектирования Memento для сохранялок. Раз игровая логика не очень сложная, то можно смело использовать MVC, тем более, что там видноформы.
Опционально прикупи одежду для программистов и сразу станешь лучше кодить.
No. 17584    
>>17583
спасибо за советы, я это учту
> можно смело использовать MVC, тем более, что там видноформы
вообще, я решил попробовать использовать xamarin, правда я с ним совершенно не знаком

я так посмотрел - люди пишут, что использовать wpf для игр не стоит (xamarin вроде на нем работает).
может кто из вас знаком с ним xamarin? какой лучше игровой движок использовать? может стоит какой патерн использовать чтоб по-взрослому выглядело, типа mvvm, mvc, или для игр такое не подойдет? если знаете хорошие материалы по xamarin - вбросьте сюда, буду благодарен
No. 17587    
Есть программка. Она дожна менять местами строки в серединке массива, если количество строк чётное. И менять первую строку с последнеё, если количество строк в массиве нечётное. У меня почему-то проверка на чётность не проходить, хотя при проверке на нечётность всё работает. Язык си. Что мне гуглить? Проверка на чётность у меня вроде верно записана.
[code]
#include <stdio.h>
#include <time.h>
int main(void)
{
const int n=12,m=4;
int i,j,c;
int a[n][m];
// printf("Введите количество строк в массиве \n")
// scanf("%d",&n);
// printf("\nВведите количество столбцов в массиве\n");
// scanf("%d", &m);
srand(time(NULL));
for (i=0;i<n;i++)
for(j=0;j<m;j++)
{
a[i][j]=rand()%12;
printf("a[%d][%d]=%d\t", i,j,a[i][j]);
if (j==m-1) printf("\n");
}
if (n % 2 == 0)
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
c=a[n/2][j];
a[n/2][j]=a[n/2-1][j];
a[n/2-1][j]=c;
// printf("\t%d\t%d\t",a[n/2][j],a[n/2+1][j]);

}
else for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
c=a[0][j];
a[0][j]=a[n-1][j];
a[n-1][j]=c;

// printf("\t%d\t%d\t", a[1][j], a[n][j]);
}
printf("\n\n");

for (i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("a[%d][%d]=%d\t", i, j, a[i][j]);
if (j==m-1) printf("\n");
}

return 0;
}
[/code]
No. 17588    
>>17587
Вложенный цикл для обмена не нужен, достаточно цикла по j. С чётным числом строк из-за наличия внешнего цикла у тебя происходит чётное число перестановок, которые компенсируют друг друга.
No. 17589    
>>17588
Спасибо.
No. 17596    
>>17584
>может стоит какой патерн использовать чтоб по-взрослому выглядело, типа mvvm, mvc, или для игр такое не подойдет?
mvvm и mvc - не для игр, а для организации работы с пользовательскими данными в веб и десктопных приложениях. Например, если ты вдруг захочешь сделать свои кроссворды в вебе, то у тебя будет MVC. Модель - классы игрового поля, Вьюха - страница которую видит пользователь, и контроллер, который отвечает за то чтобы информация пришедшая от пользователя кликнул на клетку X,Y была санитизирована, обработана, и передана в модель.

>патерн использовать чтоб по-взрослому выглядело
Не надо. Один из важных поинтов программирования и проектирования софта - не делать архитектуру ради архитектуры, и не использовать паттерны просто чтобы использовать. Keep it Simple.
No. 17597    
>>17584
>может кто из вас знаком с ним xamarin? какой лучше игровой движок использовать?
Почему не попробовать Mono? Он вроде официально поддерживается:
https://developer.xamarin.com/guides/cross-platform/game_development/monogame/ Рядом видно альтернативы
https://developer.xamarin.com/guides/cross-platform/game_development/monogame/introduction/

Алсо, учиться лучше всего на примерах. На гитхабе уже есть исходники для нонограм / пикросса они же японские кроссворды
Вот список со всем что есть по словам Nonogram и Picross на C#:
https://goo.gl/pdnEqB
https://goo.gl/wFGNPt

Есть даже прямо Picross на Mono: https://github.com/Coteh/PicrossClone

Но если тебе хочется быстрее понять базовую структуру классов, попробуй посмотреть еще сюда: https://github.com/arabcewicz/Nonogram/

Тут можно увидеть, что человек сделал всё в ООП-стиле и завел основные необходимые классы - Grid, Cell, Line (которая у него может быть Row или Column), и т.д.

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

Еще есть смысл не ограничиваться C# и посмотреть архитектуру таких проектов на похожих по синтаксису и возможностям языках.
No. 17599    
>>17596
>>17597
спасибо за информацию, посмотрю, как другие делают эти кроссворды. кстати, не знал, что пикросс еще называют нонограм

если честно, я уже не знаю, стоит ли делать его на xamarin, потому что первое впечатление от него получилось плохое.
обновил студию до 2017 версии, установил необходимые компоненты, написал скопипастил по туториалу свое первое приложение на xamarin.forms и очень разочаровался:
  • приложение не билдилось, видимо из-за того, что имя папки в которой находился солюшн было на кирилице и содержало символ "#". после переноса в другую папку сбилдилось
  • я думал, что помимо ios и android приложений я смогу создавать и десктопное приложение на xamarin, которое было бы наподобие wpf или winforms, но здесь так нельзя. в документации пишут про поддержку windows rt и uwp, но у меня при создании xamerin.forms появились только ios и android проекты. uwp приложение на ксамарине и так создать не смогу ибо это только для windows 10
  • андроид-приложение так не смогло запуститься в эмуляторе. судя по аутпуту это из-за опять же имени папки пользователя на кириллице, которая отображается кракозябрами
  • ios приложение невозможно запустить даже в эмуляторе, для этого обязательно нужно иметь мак
возможно будет лучше, если я доведу до ума то винформ приложение, которое делал в прошлом году даже не знаю
No. 17600    
150967986424.png-(13.00KB, 306×373, monogame.png)
17600
>>17597
> Почему не попробовать Mono
я думал, что monogame как-то тесно связан с xamarin, но видимо это совсем не так. список поддерживаемых платформ на их сайте впечатляет. пока забью пока на ксамарин и посмотрю, что можно сделать с этим фреймворком
No. 17601    
150972515096.jpg-(301.66KB, 1280×1723, 2739452345.jpg)
17601
>>17600
Если будешь пробовать mono, то посмотри, пожалуйста, сколько весят сопутствующие dll-ки, которые необходимы для запуска простейшего хелоуворлда. Интересно, насколько этот фреймворк будет оверкилом для моего приложения.
No. 17602    
>>17601
Вернее не mono, а именно monogame.
No. 17604    
Решил начать изучать Ruby по этой инструкции (http://blog.topolyan.com/как-стать-успешным-программистом/). Последовательность понятна, но как лучше с самим изучением?

Есть ли какие-то годные курсы, или лучше все делать самостоятельно? Обязательно ли знать английский, и насколько хорошо?
No. 17606    
150973847964.png-(121.52KB, 793×728, 2017-11-03_21-37-56.png)
17606
>>17601
ну, лично я загрузил себе дополнение для вижуал студии http://www.monogame.rocks/releases/v3.6/MonoGameSetup.exe, который добавляет шаблоны для monogame приложений под разные платформы. так вот, после создания моногейм-приложения для виндовс и его запуска папка бин/дебаг выглядит как на картинке (можешь посмотреть размеры)
No. 17607    
>>17604
Ruby довольно специфический язык в плане рынка. Он популярен в США, особенно среди веб-проектов мелко-среднего уровня, которые делаются в связке Ruby on Rails. За пределами США популярность на рынке сильно ниже. Да и сам язык вроде не настолько бойко развивается чтобы ему простительно была не слишком большая популярность. Знание английского, кто бы тебе что не говорил, обязательно в IT. Можно конечно выкрутиться без него, но тогда ты точно будешь работать среди даунов для даунов.
No. 17608    
>>17607
Питон победил?
No. 17609    
150981182986.jpg-(149.99KB, 1366×768, 750987398563456.jpg)
17609
>>17606
Благодарю.
No. 17615    
>>17608
У Питона своя атмосфера.
No. 17617    
>>17615
Объясните, пожалуйста.
No. 17619    
>>17608
С точки зрения массовости? Несомненно
No. 17620    
я тут потихоньку смотрю туториалы и примеры по MonoGame фреймворку и мне стало интересно, есть ли какие-нибудь хорошие альтернативы c#? я так то погуглил, но, возможно, здесь есть люди которые имеют опыт с разработкой игр и могут подсказать на что действительно стоит обратить внимание
из требований: возможность создания игр для виндовс и андроид как минимум
No. 17621    
15101389339.png-(45.06KB, 918×1032, cpp_logo.png)
17621
>>17620
> есть ли какие-нибудь хорошие альтернативы c#
> возможность создания игр для виндовс и андроид
Пикрелейтед.
No. 17622    
>>17621
я имел в виду фреймворк на с#. с++ сложный
No. 17623    
151016250170.jpg-(58.14KB, 604×441, photo_2017-06-10_22-07-30.jpg)
17623
>>17620
Я уже достаточно давно работал с игровыми штуками для шарпов и мои знания могли устареть. Да и делал я не игры, а всякую хуйню интерактивную.

Был XNA. Неплохое начинание, но его похоронили к хуям, а жаль.

MonoGame. Насколько помню, эта штука выросла из порта XNA под линуксы. Я с ней замудохался обеспечивать распространение. Это вам не дотнет, где "На машине должен быть фреймворк", это линуксвей с сотней зависимостей и конфликтов. Потрахался и бросил. Я бы с ним не связывался даже сейчас. Да, наверное, он развивался, но травму он мне нанёс существенную.

https://waveengine.net/
Вот с этой елдой плотно работали.
Поддержка дрянь, развивалось медленно, баги, но хорошо встало в студию и было бесплатным. Бюджет у нас был на кофе и два доширака. Приходилось расковыривать закрытые сорцы и фиксить чужие ошибки. Было больно и костыльно.

https://unity3d.com/
У всех на слуху.
Немного игрался уже в свободное время. Вполне юзабельно и СОТНИ примеров/документаций/ответов. Если бы я начал игру делать, то взялся бы за юнити. Да, там ублюдский редактор и интеграции так себе. Зато он сейчас в тренде — сотни туториалов, документаций, вопросов-ответов. Ну и студии нанимают людей, которые знают юнити. А ещё кроссплатформенность.

Есть был https://xenko.com/ но он был сырой и дорогой, как промежность школьницы. Сходи с ним на разведку, потом расскажешь.

> на что действительно стоит обратить внимание
С помощью движка ты должен быстро делать игру, а не мудохаться с движком, пытаясь понять, почему на пустой сцене у тебя 2 ФПС, куда потекла память и почему при сложении векторов у тебя NotImplementedException.
Что-то отлаженное и популярное типа юнити отлично подойдёт — долго в продакшене, есть сотни туториалов, справочников, документаций. Бери и делай.
No. 17624    
>>17622
Ни разу не сложный. Ты просто не распробовал!
No. 17627    
>>17620
Юнети, как уже сказали. Можно даже не сярпом, а мышкой всё погромировать.
No. 17630    
151019817059.jpg-(51.04KB, 1280×720, maxresdefault.jpg)
17630
>>17623
спасибо за большой ответ!
> Что-то отлаженное и популярное типа юнити отлично подойдёт
отлично, его и попробую. только мне очень важно, чтобы к юнити-проекту можно было присобачить entity framework и подключаться к базе данных mssql. в нем ведь можно это сделать, да? достаточно загрузить нагет пакет entity framework через студию и можно будет использовать его в юнити-игре?

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

кстати, наткнулся на ютубе на серию видео-уроков по разработке платформера на моногейме, так в нем парень свыше 50 роликов делает платформер, который можно сделать в гейммейкере за час. я так понял, что моногейм предназначен для тех, кто хочет разработать собственный движок для своей игры и компоненты для удобства ее разработки, а это очень долго и сложно но можно попробовать делать на нем какой-нибудь хобби-проект, если заняться больше особо нечем
наверно, для меня будет лучше, если можно будет мышкой потыкать и все само сделается, как сказал >>17627
No. 17631    
>>17621
А как на C++ под андроид? Когда тред создашь?
No. 17633    
>>17631
Есть NDK, есть Qt и SDL. Я ни разу ещё не пробовал, но можно и даже есть гайды.
А что мне в треде писать-то?
No. 17634    
>>17633
Я пробовал. И мой калькулятор даже запустился с 10-го раза. Я порадовался, удалил и взялся за Unity.
Игрушки на Qt для Андроид - это для тех, кто хочет все сначала и до конца сам делать. Ну или у тебя уже есть какие-то наработки в виде библиотек.
No. 17635    
>>17634
> это для тех, кто хочет все сначала и до конца сам делать
Ну... в этом и смысл!
No. 17636    
>>17630
> присобачить entity framework и подключаться к базе данных mssql
Мать моя легаси, а зачем? Понятия не имею, есть ли такая интеграция. А если есть, то на кроссплатформенность можно не рассчитывать (хотя, если туда .net core встраивается, то вот на линуксах можно, теоретически).

Я бы предложил тебе WebApi для работы с бд.
Клиент (игорь) лезет на сервис, дёргает методы, получает от базы всякое, и всё прекрасно, и в три звена. А два звена это дырка в безопасности и в боевом будущем будет больно.
No. 17637    
>>17635
Ну, есть два подхода: "всё и с нуля" и "нам нужен продукт".
В первом случае это энтузиазм, исследование неизвестного, приобретение опыта и маленький шанс получить в итоге готовый продукт.
No. 17638    
>>17630
> моногейм предназначен для тех, кто хочет разработать собственный движок для своей игры и компоненты для удобства ее разработки
Ну, sort of. Недодвижок, переобёртка над графическими api.
Кое-что позволяет сделать проще, для всего остального надо разрабатывать анус.
No. 17639    
>>17636
> Я бы предложил тебе WebApi для работы с бд
То есть мне придется создать отдельное asp.net webapi приложение, захостить его где-нибудь на azure хочу и получать данные обращаясь к строке вида xxx.com/api/xxx/getxxxbyxxx ? Если это так, то выглядит как-то небезопасно, ведь кто угодно может гетить и путить туда что захочет. Как с таким справиться?
No. 17640    
151027597753.png-(178.54KB, 1247×688, ConceptualArchitecture.png)
17640
>>17636
> Мать моя легаси, а зачем?
кстати, не совсем понял, почему ты так удивился. разве так делать плохо? загрузить в отдельной либе ентити фреймворк, аккуратненько прописать все эти энтити-классы, то-сё, добавить эту либу к приложению клиента и обращаться с него в базу когда нужно. ну и получается вроде как все безопасно и просто-понятно. если это плохо, то напиши как нужно хорошо, пожалуйста

еще когда в ксамарине ковырялся, то заметил пикрелейтед. то есть дата лэер с этим всем добром, как я выше написал
No. 17641    
>>17639
Авторизация @ Аутентификация
А кто угодно упрётся в требование логина @ пароля.

>>17640
Ну, прямой доступ к удалённой БД это всегда опасно. Они дают слишком много информации — противник будет знать о БД, её типе, её структуре и всё такое.
Я понимаю, когда БД локальная, но вот удалённая...

Приложения с такими штуками не проходят ревью у безопасников.
No. 17643    
>>17641
> Авторизация @ Аутентификация
предлагаешь в виде параметров передавать логин и пароль? а это по-взрослому? просто как-то не видел раньше чтоб так делали
> противник будет знать о БД, её типе, её структуре и всё такое
расскажи, пожалуйста, как они это могут сделать. типа через декомпиляторы всякие exe вскрыть?
No. 17644    
>>17643
> предлагаешь в виде параметров передавать логин и пароль? а это по-взрослому? просто как-то не видел раньше чтоб так делали
Не-не-не.
https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/
Вот, посмотри. Да, логин и пароль будут доступны/смогут вытащить, но доступа к базе не получат, а реквесты от клиентов ты обрабатываешь на сервере и хуйню сможешь обнаружить. И отреагировать на неё.

>расскажи, пожалуйста, как они это могут сделать. типа через декомпиляторы всякие exe вскрыть?
Например. Возьми вот эту замечательную тулзу https://www.jetbrains.com/decompiler/ скорми ей любую свою приложуху на дотнете и ахуей от того, что всё лежит на ладони
No. 17645    
>>17644
> Вот, посмотри
спасибо, почитаю
> скорми ей любую свою приложуху на дотнете и ахуей от того, что всё лежит на ладони
да, помню, я делал подобное, только какой-то другой программой. прикольно было посмотреть

мне еще интересно вот что: скажем, пользователь хочет загрузить уровень из таблички level базы данных, отправляет с клиента запрос к вебапи, все проходит отлично и ему возвращаются дынные... но в каком виде ему отправить уровень? по идее было бы удобно отправить объект ентити фреймворка таблички level, оно вроде как придет в виде джейсона так ведь? и можно потом его распарсить и превратить в объект класса level клиента, который идентичен классу ентити фреймворка. так стоит делать или как-то по-другому? я просто с вебапи плохо знаком, мб что-то не правильно сделаю
No. 17646    
>>17644
> https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/
я тут просмотрел варианты аутентификации и они вроде как требуют браузер в качестве клиента если я правильно понял, а у меня ведь клиентом выступает обычное c# приложение для десктопа/смартфонов. какой способ аутентификации стои выбрать в таком случае? лично я знаком с Forms Authentication, но она кажется в куки хранит информацию о пользователе, то есть такое только для сайтов подходит
No. 17651    
>>17645
> но в каком виде ему отправить уровень?
В красивом варианте клиент ничего не знает про сервер, а сервер про клиент. Клиент просит уровень у магического адреса, сервер берёт сотню таблиц, настроек, путей, считает всякую срань и схуячивает результат работы в объект. Который отправляется куда-то виде xml, json или любой другой извращённой фигни.

Клиент получает эту портянку, разгребает её и рисует всякое.

>>17646
Да куки,
https://ideone.com/aKaCnU
Вот, вырвал из рабочего проекта ошмёток. Используем http://restsharp.org/ для работы с апи.

В двух словах:
Пока _client не .Dispose() то всё будет норм. Перед (например) Ping() надо только сделать Authentification().

Но мне кажется мы уходим в дебри. Для начала бы попробовал примитивную игру сделать про увлекательные приключёния злоебучего прямоугольника в мире психоделической хуйни и ТЕСТОВАЯ ТЕКСТУРА.

А уже потом клиент-сервера, webapi, базы данных, латенси, кеширование, актуализация, шифрование, защита, анализ и прочие увлекательные анальные утехи.
No. 17656    
>>17651
> красивом варианте клиент ничего не знает про сервер, а сервер про клиент
> Клиент получает эту портянку, разгребает её и рисует всякое.
но можно ведь для удобства создать классы на клиенте, чтобы удобнее было разгребать данные с сервера?

> Вот, вырвал из рабочего проекта ошмёток
не совсем понял метод Authentification. ты ведь хочешь здесь просто залогинить юзера, так? чому урл реквест такой длинный "Authentification/{login}/{protocolVersion}/{userId}/{pushToken}"? это, наверно, особенности твоего проекта, да? а мне можно будет сделать вот так, например: Authentification/?login=xxx&password=xxx ? и еще эта тема с куки непонятная response.Cookies. ты, получается, на сервере в ответ записываешь куки данные и отправляешь клиенту? что ты там хранишь и как используешь? на сервере хранится инфа о том, что какой-то юзер залогинен? аттрибут [Authorize] работает?

> Но мне кажется мы уходим в дебри.
лол мне тоже. уже не помню, почему начал спрашивать про вебапи. помню только что просил посоветовать игровой движок.
405 сообщений пропущено. Показаны 100 первых сообщений.
Удалить сообщение []
Пароль  
[Mod]