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

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

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

Другие тематические нити (периодически обновляется): https://pastebin.com/psy43ibG

Примеры кода лучше выкладывать в виде ссылок на 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
http://410chan.org/dev/arch/res/17424.html

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

>Хочу литературу по архитектуре компьютерных игр
>>/dev/17571

>Хочу написать клон Picross (Nonogram) с использованием xamarin
>>/dev/17597

>Хочу альтернативу фреймворку MongoGame
>>/dev/17623

>Видеоматериалы для обучения Python
>>/dev/17661

>Хочу отзеркалить изображение с веб-камеры
>>/dev/17892
>>/dev/17895

>Тяжело ли искать местро трудоустройства программисту?
>>/dev/18085
>>/dev/18086

>Хочу узнать как были написаны классические игры (крестики-нолики, змейка, етц)
>>/dev/18114
>>/dev/18143
>>/dev/18144
>>/dev/18145

>Хочу научить ИИ проходить ПакМан
>>/dev/18160

>Расскажите про прерывания
>>/dev/18390
>>/dev/18393

>Помогите начать работать с БД
>>/dev/18418
>>/dev/18421
>>/dev/18422
>>/dev/18432

>Расскажите что такое load balancer
>>/dev/18466

>Подскажите упражнения для front-end разработчика
>>/dev/18880
No. 19687    
Хочу сделать парсер для одного довольно старого сайта, которых хранит в себе электронные дневники людей, нет, не школьные, а обычные, как блоги, http://www.diary.ru/ что бы можно было удобно искать нужные тебе записи по ключевым словам, потому что там крайне ущербная навигация, есть только циферки внизу, по которым можно подгружать новые страницы, а строки поиска там нет в принципе, \
интерфейс напоминает старые имиджбордовые движки без куклоскрипта,
как вообшще можно сделать такой парсер и каков будет принцип его работы?
Сначала в какой-то отдельный текстовый файл скачивается весь дневник, а потом в нем происходит поиск и переадресация на нужную страницу?
На чем лучше такое писать и какая должна быть архитектура приложения?
No. 19688    
>>19687

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

Первое решение, самое простое и ленивое для достижения твоей цели - завести google custom search для этого ресурса, если это еще можно. Альтернативно, просто воспользоваться встроенными инструментами поиска гугла, и совершать поиск, добавив инструкцию site:myawesomediarysite.ru и возможно дополнительно inurl:myauthorurl

Ссылки по этой теме:
https://bynd.com/news-ideas/google-advanced-search-comprehensive-list-google-search-operators/
https://support.google.com/websearch/answer/2466433?hl=en

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

>Как вообшще можно сделать такой парсер и каков будет принцип его работы?

Тут ты начинаешь строить гугл в миниатюре.
В лоб эти приложения строятся таким образом:
  • Берется движок / фреймворк для полнотекстового поиска, на целевом языке
  • Потом пишется код для импорта этой информации, где средствами этого движка / фреймворка составляются индексы по ключевым словам и складываются в хранилище, например в бд
  • Потом пишется код, который позволяет тебе запускать поисковый запрос по этой информации и показывать результаты в нужном виде, например выдержка из текста и ссылка на запись
  • Потом, по желанию, ты приделываешь любой удобный тебе интерфейс, который позволит тебе запускать этот поиск и работать с результатами. Это может быть простая веб-страничка с полем для ввода запроса и местом для вывода результатов.
>На чем лучше такое писать и какая должна быть архитектура приложения?
Писать лучше на том, с чем лучше всего знаком. Если мало знаком со всем, попробуй написать на NodeJS, т.к. хотя бы будешь и фронтэнд и бэкенд свой реализовывать на одном языке

Воркфлоу у тебя получится примерно такой:
Интерфейс --> Контроллер поиска --> Поисковый Фреймворк --> Хранилище

Но я бы всё таки попробовал сначала инструменты гуглопоиска.
No. 19690    
>>19687
Очевидно, нужно парсить хтмл перловыми регулярками.
No. 19701    
>>19688
Спасибо за такой подробный ответ. Буду пробовать и то и другое.
Из всех ЯП я лучше всего знаю Java (SE), именно на ней я бы реализовал бэкенд,не знаю правда какой фреймворк использовать для работы с текстом, не посоветуешь какой-нибудь?,
а интерфейс уже можно на чем угодно написать..
Так что наверно бэк - Java, БД - MySQL, фронтенд - что-нибудь,

>>19690
ох, надеюсь нет, вообще не представляю, как можно нормально знать регулярки, если конечно ты не работаешь с ними каждый божий день
No. 19702    
На реплику >>19690 рекомендую вообще не обращать внимания, так как это либо троллинг, либо просто шуточный невѣрный отвѣтъ, основанный на появлении мема «Залго» в отклике https://stackoverflow.com/a/1732454 на сайте StackOverflow.
No. 19703    
>>19702
Нет ничего плохого в парсинге регулярками если иметь голову на плечах.

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

Хватит тащить в конкретные прикладные задачи идеологическую чепуху.
No. 19704    
>>19703
А почему нельзя взять какой-нибудь specflow и selenium.webdriver, да написать простейшие ui-тесты которые просто и понятно будут делать все что ты захочешь?
No. 19705    
>>19704
Потому что использовать веб-драйвер для парсинга - оверкилл, если все данные доступны на статичной страничке.
Но как отрисовывает diary.ru я не смотрел, да.
No. 19711    
>>19701
>не знаю правда какой фреймворк использовать для работы с текстом, не посоветуешь какой-нибудь?
Конечно посоветую. Мне в своё время очень понравился Jaunt: http://jaunt-api.com/

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

Правда, помни, что
>Jaunt is the ideal tool when Javascript support is not required
Так что жаваскрипт он тебе не эвалюирует. Но вроде, в твоем случае это и не нужно, верно?
No. 19740    
152527207256.png-(27.61KB, 597×478, cc5x.png)
19740
Извините, что влезаю со своей мелочью, но такой вопрос: вот есть компилятор cc5x для PIC микроконтроллеров, на его оффсайте заявлена поддержка MPLABX, надо только плагин поставить. Только вот планига нет, в репозитории плагинов пусто. Ни для 2.35, ни для 3.х. Не, добавить сторонний компилятор можно и вручную, только будет такая фигня, как на рисунке - среда просто не видит объявления имен из файлов компилятора и все. То есть, IDE нормально компилирует программы для разных микроконтроллеров, все ок, только вот выделение конкретно достает, так как настоящих ошибок не видно. Может быть кто-то знает, что с этим сделать можно, а то информации про cc5x как то уж слишком мало. Или хотя бы показать, куда пойти спросить.
No. 19742    
>>19740
Почему не XC8/XC16? Объявления <p18xxxxx.h> точно есть в инклудах?
No. 19749    
>>19742
XC8 заметно портит код (бесплатный вариант), точнее, сильнее, чем cc5x. На всякий, на асм'е писать могу, просто для неответственных задач это долго, читабельность старого кода так себе и тд. Header конечно же объявлен, иначе уже компилятор начал бы ругаться на необъявленные символы.
Сейчас подумал, header нужно прописывать с путем, что немного странно, так как при добавлении компилятора я указываю пути, IDE типа в этих путях не ищет? Попробую посмотреть настройки путей поиска, хотя сомнительно, что поможет.
No. 19754    
>>19740
Ты просто не дочитал. Плагины есть, только представлены они в виде исходников, которые надо собрать самому:

В файле
>http://www.bknd.com/files/mplabx-i.txt
Лежит ссылка на
https://github.com/mc6pac/toolchainCC5X
>CC5X from v3.5D
>MPLABX from v3.40

По связыванию через добавление стороннего компилятора у них лежит другой гайд: http://www.bknd.com/files/mplabx-p.txt
No. 19759    
>>19754
Да, конечно, я видел этот гит, но я решил, что он заброшен, так как не нашел там нормального гайда, что делать с файлами (ну, я все-таки электронщик и "лоу-левел" программист, в компиляции программ на этих ваших явах я не очень).

А вот про тайпдефы из гайда про дженерик плагин недочитал, да. Собственно, сейчас cc5x через дженерик плагин и стоит. Попробовал скопипастить их в тект программы, добавлял через #include внешний файл, и все равно среда не видит объявлений.
No. 19760    
Есть ли причины использовать Hg вместо git, в 2018?
No. 19762    
Привет.
Вопрос: является ли в 2018 году Джанго хорошим выбором для получения первой работы программистом? (ниже подробности)

Я начал изучать Джанго именно с целью зарабатывать в дальшейшем программированием, и меня постоянно мучает вопрос: правильно ли я выбрал? Не трачу ли я силы на умение, не пользующееся спросом? Да, хэдхантер выдаёт результат по запросу Django, но выдача не даёт понимания того, как сложно найти работу. Выбрал Питон-фреймворк, потому что был до этого знаком с Питоном на любительском уровне.

Если в моём вопросе видно, например, наивность, или непонимание «как всё устроено», то будет здорово, если укажете что не так, объясните или поправите.
No. 19763    
>>19762
Расскажу тут историю, если ты не против.

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

Начал смотреть на nodejs, посмотрел туторы, тогда был модным express. Сколько же я плевался от синтаксиса. Js такое же говно если писать что то сложнее мелких скриптов на сайте. Создаешь лапшу из колбеков, тогда для меня вообще было дикостью, объявлять функцию в аргументе функции и она тянется вниз и сиди разбирай эти скобки.
Более всего нравилось в самом низу страницы такая хрень "}))));". Сейчас с синтаксисом там полегче, но все равно видно, что это блять костыли.

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

Потом я ебанулся в край, решил заняться Perl в 2014 или 2015 то. Не знаю откуда такая идея появилась ебнуло и все. Но зато ебнуло правильно, что изучать надо не как на пхп макакать что то, а книги открыть, концепции языка узнать, фичи. Прочитал я 2 книги по нему начальный с верблюдом и углубленное с ламой там есть смешнявки на эту тему в книгах. Было полезно, сейчас до сих пор юзаю когда надо с текстом поколдовать или регулярки потестить, но не более, хотя Пайтон лучше наверное зайдет для этого.

Ну и гуглю язык, чтобы на Си было похоже, чтобы ооп костыльно-ебаного не было, чтобы можно было процедурщину ебошить и красиво чтобы, а не как в си есть у меня друг, который всё на си ебошит и сайты и микрухи, что не предложи сделать ответ очивидный - Си!. Нашел я таким образом Go. Понравилось всё, компилируемый, мусор собирает, строгая типизация, встроенная либа жирная всё есть, go get любой хуйни с гитхаба, ООП местный которого там нет понял с пол пинка, а не как эти годичные осиляторства классического джава ООП. Идеально и веб можно ебошить, и утилиты себе на линупс.

Открываю, значит hh, в фильтрах мой мухосранский миллионик, вбиваю в поиск Golang. В выдаче - нихуя. Окей, пишу Go в строке, две вакансии. Ура - первая танцовщица GoGo, вторая с машинками связана. Ну вот это заебись, вот это мне фортит.
Ну я и решил, чтобы все шли нахуй. Купил книгу по го та что с оленем, вторую скачал, которая с мостом красным. Прочитал за три месяца, изучил концепции, наваял пару прог, утилиты да браузерку на web сокетах.

Заключение:
А нихуя ещё не понятно чем кончилось, вроде и работа есть теперь пишу периодически на гошке, деньги есть, вакансий куча появилось, уровень ЗП гораздо выше чем пхп макака. В общем развиваюсь дальше, тестирование осилил недавно.
Да и вакансии все на свежие проекты, без допиливания древнего говна.

Кароч забивай хуй и качайся в том что нравится, без работы не останешься, а знания питона, вроде как классно. Можно и машин лернинг и дэйта саенс пилить.
Где то на Хабре было, чувак писал про свои 20-25, что он метался, чем заняться, что выбрать, как угадать. Ощущение, что куда то не успел и поезд уже ушел.
На самом деле все ещё только создаётся.
No. 19764    
>>19759
>Да, конечно, я видел этот гит, но я решил, что он заброшен, так как не нашел там нормального гайда, что делать с файлами (ну, я все-таки электронщик и "лоу-левел" программист, в компиляции программ на этих ваших явах я не очень).

Плагин надо открыть в NetBeans и собрать в .nbm:
https://platform.netbeans.org/tutorials/nbm-projectsamples.html#building
Тебя интересует
>Creating a Shareable Module Binary

Затем взять этот .nbm и скормить MPLABX по инструкции здесь:
http://microchipdeveloper.com/mplabx:tools-plugins-downloaded
No. 19765    
>>19762
Питон и конкретно Джанго смогут надежно трудоустроить тебя в крупные компании или хорошие стартапы в ДС и ДС2 (предполагая, что ты из России), а также, после некоторого опыта, и на европейскую/американскую удаленку. Здесь проблем с поиском работы не будет еще довольно долгое время, потому что, во-первых, язык и фреймворк для своих задач достаточно хорошие (много вспомогательных инструментов, большая база знаний, отсутствие фатальных подводных камней), и, во-вторых, на них пишет довольно много людей, чтобы можно было начинать новый проект на Питоне и быть уверенным, что получится собрать для него штат - что, например, неверно для Руби (в России; в США, насколько я знаю, с этим получше). В регионах ситуация для питонистов, конечно, печальнее, но какую-то работу тоже можно найти - сужу по немаленькому количеству откликов иногородних питонистов на свои вакансии.
No. 19773    
хочу стать программистом по мамашиному обучению нашел курсы http://skillfactory.ru вопрос стоит ли доверять этим курсам, и что еще нужно изучать что бы стать специалистом по машинному обучению? извиняюсь просто не знал куда обратиться.
No. 19774    
>>19773
Обучись сначала начинать предложения с большой буквы.
No. 19775    
>>19774
Какая тебя вообще разница как я пишу?
это я просто тупо не подумал.
No. 19776    
>>19774
Чиочую.
No. 19780    
>>19773
К сожалению, не сталкивался с их курсами, но возможно про них знают в нити машинного обучения:
>>/dev/19531
No. 19781    
>>19773
>>19780
Также вижу, что вот прямо завтра, 14го мая, на курсере стартует курс по машинному обучению, который будет вести профессор Стенфордского университета: https://www.coursera.org/learn/machine-learning

Мне кажется, это может тебя заинтересовать.
No. 19785    
Хочу поступать на кафедру искусственного интеллекта. Есть вопрос: насколько реально после выпуска заработать на этом? Не в этой стране, так за границей.
No. 19786    
>>19785
Смотря в какой АИ-связанной сфере ты хочешь заработать. Сейчас вот все увлеченно ищут специалистов по машинному обучению. Если у тебя есть навык, то можешь начинать и без поступления на кафедры, работая удаленно.
No. 19994    
что не так сделал
public class Its_alive {
public static void main(String[] args) {
System.out.println ("Its Alive!");
}
}

Compilation error
Main.java:1: error: class Its_alive is public, should be declared in a file named Its_alive.java
public class Its_alive {
^
1 error

Please do not declare public classes.

пишет не объявляете открытые классы что это значит не врубаюсь вот идиот по ход
No. 19995    
>>19994
>Main.java:1: error: class Its_alive is public, should be declared in a file named Its_alive.java
Ну, компилятор тебе всё написал. Жаве не нравится, когда имя файла и имя класса не совпадают. Переименуй файл в Its_alive.java, или переименуй класс в Main, и всё у тебя станет лучше.
No. 19996    
>>19995 уже пробовал пишет
Compilation error
Main.java:1: error: '{' expected
public class Its_alive.java {
^
1 error
No. 19997    
>>19995 ну ответь
No. 19998    
>>19995 ебать я долбоеб был
No. 20001    
>>19998
Разобрался с созданием класса?
No. 20004    
152697055514.jpg-(81.97KB, 540×720, 15230838174210-b.jpg)
20004
>Не знаете, как подступиться к проблеме? Вам обязательно сюда.
Здравствуйте. Дело такое, что я в целом не понимаю как подступиться к 3д. Цель - наваять какой-нить примитивный, очень простой 3д шутер. Потом его допиливать. Прикрутить сеть LAN/Ethernet, и т.д.
Гуглил много инфы по directx, но ничего не понятно. Вернее там 99% всего нагугленного состояло из "делаем сложную штуку, объяснять как работает и что значат команды буду в уроке 2, который я никогда не напишу".

Я очень устал. Мне уже кажется, что между hello world и любым нормальным приложением с каким-нить API просто непреодолимая пропасть. Поэтому прошу подкинуть хоть какую-нить инфу, может книги/статьи, которые помогли именно вам в этой сфере.

Интересует именно использование directx/opengl, скажем, с с++.
No. 20005    
>>20004
Всё зависит в первую очередь зависит от опыта.
В твоём случае, когда ты хочешь просто собрать простой шутер, или можно сказать, рабочий прототип шутера, а также хочешь прикрутить к нему какие-то достаточно абстрактные фичи (вроде мультиплеера по LAN), то создаётся впечатление, что тебе надо как можно быстрее прыгнуть в работу непосредственно над самой игрой, а не созданием движка для неё. Созданием движка можно будет заняться уже потом, когда будет понятно, как игра должна работать.

И в этом контексте, очень хочется вспомнить про Unity, который достаточно быстро позволяет создать что-то типа такого: https://my.mixtape.moe/oplint.mp4

Есть только одна загвоздка, в то время как Unity поддерживает С++ для написания плагинов, основной используемый язык там С# альтернативно, JavaScript. Если само по себе это не является препятствием, то продолжай читать дальше.

Для Unity существует достаточно много туториалов, их можно найти много где, включая официальный сайт.

Вот например, туториал конкретно о том как создать шутер с мультиплеером: https://unity3d.com/learn/tutorials/topics/multiplayer-networking/merry-fragmas-30-multiplayer-fps-foundation
Это первая часть из трёх, тут закладывается базис игры.

А вот детальный список туториалов по сетевому коду, где в том числе есть список по вышеупомянутому шутеру: https://unity3d.com/learn/tutorials/s/multiplayer-networking

Также Unity удобен тем, что может помочь тебе получить какие-нибудь тривиальные модельки (оружие, контейнеры, бочки, столы) через встроенный магазин ассетов, где есть в том числе и всякое бесплатное.

Если же хочется поработить именно с С++, то из готовых движков стоит смотреть в сторону Unreal Engine 4. Он достаточно популярен, хотя и имеет своеобразный "блок-схемный" подход к созданию и управлению сценой. Если работать с Unity тебе не захочется, или он тебе попросту не понравится, напиши мне и я постараюсь принести тебе материлов по UE4.
No. 20006    
>>20005
Мне кажется, что анон выше имел в виду, что ему хочется прям с нуля создать шутер используя именно directx/opengl. А ты предлагаешь ему по сути готовый вариант всего того что он хотел бы создать сам.
No. 20007    
>>20004
Теперь, если тебе хочется непосредственно пощупать и потрогать 3д-графику за всякое, и понять как она работает то стоит посмотреть в сторону книги:
>Андре Ламот
>Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации
https://vk.com/wall-54530371_660

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

Теперь, если тебе хочется потрогать такие вещи, как АИ противников, обработка управления, работа со звуком, многопоточность, физика (к сожалению про сетевой код там нет, в качестве мультиплеера они рассматривают разве что сплит-скрин)
>Андре Ламот
>Программирование трехмерных игр для Windows. Советы профессионала. Второе издание.
http://www.cosmic-rays.ru/books61/20036101Ламот.pdf

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

По сетевому коду, пока могу найти только общие вводные статьи:
https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/
No. 20008    
>>20006
Написав свой ответ, я тоже так подумал, поэтому приложил ему материалы, которые помогут создать эти вещи с нуля в >>20007, пусть не самые современные, но достаточные для того чтобы их потом можно было осовременить. Найти бы теперь такое же детальное описание сетевого кода, это ж очень влияющая на архитектуру игры вещь.
No. 20009    
>>20005
>>20006
>>20007
>>20008
Ребят, спасибо, вы лучшие.
С Андре Ламота и начну. За информацию по движкам тоже спасибо, но почему-то мне кажется, что прежде чем с ними работать, нужно попробовать сделать свое, понять, как это работает.
No. 20010    
>>20009
>мне кажется
Скажи мне, ты, перед тем как есть, создаёшь вселенную, моделируешь планеты, проводишь эволюцию, находишь нужных растений и животных и убиваешь и готовишь их самостоятельно, попутно добывая и обрабатывая ресурсы на стол, стул, ложку, тарелку и вилку, или идёшь есть приготовленное дома и купленное в магазине?

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

Дело твоё, но >>20005-совет лучше описывает процесс, если тебе интересно в первую очередь сделать игру, а не. Плюс, движки тоже требуют времени на изучение, и понимание того, как они работают, учит каким-то концепциям ничуть не хуже велосипединга. А ещё лучше читать книжки о базе, чтобы понять теорию, отпракать на чём попроще, а потом не возвращаться без необходимости.
No. 20011    
Ищу совета доброго анонима.
Есть желание и способности работать в it. Правда такая проблема: на кого лучше поступать и кем работать? Ведь действительно хочется быть всем везде.
Для себя самым оптимальным вижу прикладное программирование, ну или машинное обучение и ИИ (после: работа в крупных компаниях или инди-разработка какого-либо ПО, последнее вряд ли прокатит с ИИ).
No. 20013    
>>20011
>на кого лучше поступать и кем работать
На туда, кого берут в твоём регионе.
>хочется быть всем везде
Иди в software engineering, будешь потом пробиваться в тимлиды/менеджеры и пить смуззи.
No. 20014    
>>20011
По вопросу, чем конкретно заняться, возможно, тебе поможет такая информация из пополняемой базы знаний: https://pastebin.com/AGhLZppH

>>Я хочу программировать, но не понимаю, куда можно приложить усилия
http://410chan.org/dev/arch/res/14160.html#14354

>>Я ищу свой стек / хочу переквалифицироваться / поменять стек
http://410chan.org/dev/arch/res/14160.html#14188
http://410chan.org/dev/arch/res/14160.html#14265
http://410chan.org/dev/arch/res/14160.html#15233
http://410chan.org/dev/arch/res/14160.html#14968

>на кого лучше поступать и кем работать
Поправь, если данные устарели, но по-моему многие ИТ-специальности в наших краях выпускают тебя почти всегда одинаково, как инженера-программиста. Плюс некий общий ИТ-курс до непосредственных занятий по специальности ты всё равно пройдешь. Надо понимать, что в универе обычно учат плохо и старому. Хотя дела могут быть лучше, если в универе есть кафедра открытая местной ИТ-компанией, чтобы дергать оттуда новых сотрудников.

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

Что подводит к ответу на вопрос
>кем работать
Без опыта ты сможешь пойти работать скорее всего только как джуниор. Это очень сужает твой круг возможностей, т.к. большую часть времени ты будешь заниматься всякими мелочами и просто работать над мелкими и средними задачами которые приедут тебе сверху. Но если ты будешь работать пока учишься, как я тебе и предлагаю, то это всё не очень критично, т.к. доход как для студента это всё равно даст немалый, и поможет достичь главной цели - получение опыта и необходимой квалификации, чтобы устроиться туда, куда ты захочешь. Если к моменту окончания универа у тебя уже будет пару-тройку лет опыта, ты уже будешь в курсе того, что там в индустрии на тот момент круто и куда бы ты хотел себя подать. Главное, не иди "программистом" в какую-то непрофильную шарашку, устраивайся именно как разработчик в софтвер контору, продуктовую или аутсорс - не так важно.
No. 20018    
>>20011
> работа в крупных компаниях или инди-разработка какого-либо ПО, последнее вряд ли прокатит с ИИ
Вот и решай уже сейчас, продавать свою жизнь крупной компании или инди-разрабатывать для инди-разработки, скорее всего, потребуются и другие таланты и умения кроме программирования.
>>20013
> На туда, кого берут в твоём регионе.
Игнорируй этот совет, если ты живешь в СНГ.
>>20014
> пару-тройку лет опыта, ты уже будешь в курсе того, что там в индустрии на тот момент круто
Конечно, он обязательно должен за это время освоить стек из модных фреймворков и получить опыт agile-разработки в крупной компании, накопив портфолио проектов.
No. 20019    
хуёня не объяснимая кто нибудь поможет решить вот это
Реализуйте метод, возвращающий true, если среди четырех его аргументов ровно два истинны (любые). Во всех остальных случаях метод должен возвращать false.

Воспользуйтесь шаблоном кода, который предлагает система. Ввод-вывод будет сделан за вас. Вам надо только проанализировать переданные в метод booleanExpression значения (a, b, c, d) и вернуть результат. Попробуйте составить формулу с использованием булевых операторов. Если не получается, вернитесь к этому заданию после просмотра степов про условные операторы и циклы.

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

В качестве примера уже указано заведомо некорректное решение задачи. Исправьте его.

Совет тем, у кого не проходит какой-то из тестов. В данной задаче возможно всего 16 комбинаций значений входных параметров. Их можно выписать на бумажку, посчитать для них правильные ответы и сравнить с тем, что выдает ваше решение. Попробуйте самостоятельно проделать это, найти ошибку и исправить решение.
Sample Input 1:
false false false false
Sample Output 1:
false
Sample Input 2:
true true true true
Sample Output 2:
false
Sample Input 3:
false false true true
Sample Output 3:
true
No. 20021    
public static boolean booleanExpression(boolean a, boolean b, boolean c, boolean d) {
return a & b & c & d;
}
No. 20024    
>>20019
Выпиши таблицу истинности булевой функции, по этой таблице построй формулу в дизъюнктивной нормальной форме; опционально можешь упростить формулу, применяя законы булевой алгебры.
No. 20025    
Анон!!! Помоги, пожалуйста. В oracle sql вообще не разбираюсь. Заставили на работе срочно посчитать количество записей за один определенный месяц, причем количество по значению типа. Вообщем на сколько я смог додуматься это
select type, count()
from table
where time >= to_date('01.01.2017')
and time < to_date('01.02.2017')
group by type;
Но блин проблема в том, что уже несколько часов считает, а результата нет.
Там таблица по секвенциям разбита, например я знаю что можно сделать запрос по одной секвенции
select from table partition(p_01_01_2017)
но как сделать запрос по нескольким секвенциям??? Или как иначе можно ускорить?? Я должен успеть до утра посчитать
No. 20026    
>>20025
https://stackoverflow.com/questions/19523061/select-from-several-partitions-at-once
>>20025
> Или как иначе можно ускорить??
Создать индексы по нужным колонкам. Только не нужно создавать их сейчас, а то точно не успеешь. Посмотреть какие задержки ввода/вывода, использование памяти и обновить железо при необходимости.
No. 20027    
>>20019
>>20021
На скорую руку решение видится как-то так:
https://ideone.com/1ELQep
Наверняка есть более элегантное, но уж что пришло в голову.
No. 20033    
>>20026
Кароче успел. Вообщем ночью придумал запрос выполнять по каждому фрагменту таблицы по отдельности. Прикинул что в одном месяце 30 дней, то есть 30 фрагментов. И сидел запускал 30 раз ночью такой запрос:

select /+ parallel(32) /type, count(*)
from table partition(p_01_01_2017)
group by type;

Потом результат каждого вставлял в librecalc. В конце в librecalc просуммировал формулой всех 30 дней значения и получил результат за месяц. Для ускорения использовал parallel, хотя его запрещают использовать почему то. Надо все таки как то фундаментально этот sql выучить, а то так запаришься.

Ну, вообщем от души Анон по-братски, спасибо за поддержку.
No. 20047    
хочу выложить свой asp.net mvc сайтик на гитхаб, чтобы обновлять было удобнее, но меня волнует безопасность данных... на сайте можно регистрироваться и логиниться (Forms authentication), после чего добавлять/удалять картинки. мне вот интересно, может ли как-нибудь пользователь получить контроль над данными другого пользователя? например, печеньку авторизации подделать и поудалять все, или еще что.

вот так выглядит метод удаления: https://pastebin.com/SvXCFxKP

меня интересует правильно ли я делаю проверку на то, принадлежит ли картинка пользователю. возможно, стоит делать как-то по-другому?
No. 20048    
>>20047
Если тебе нужен гит и не хочется выкладывать в общий доступ, то можешь создать репозиторий на bitbucket
>вот так выглядит метод удаления:
>https://pastebin.com/SvXCFxKP
Не очень информативно.
Обычно делают так: при авторизации клиент получает от сервера cookie с идентификатором случайным сессии, а на сервере в базе хранится информация связанная с сессией (id пользователя и т. д.), ассоциированная с этим идентификатором. При такой реализации куки подделать нельзя, только своровать.
No. 20049    
>>20048
в базе я храню только логин-пароль пользователя, но данные сессии/авторизации не сохраняю.
вот метод логина: https://pastebin.com/nzyfEtu3
может, это
> клиент получает от сервера cookie с идентификатором случайным сессии, а на сервере в базе хранится информация связанная с сессией
делает метод "FormsAuthentication.RedirectFromLoginPage(model.Login.Trim(), true);"?

мсдн пишет, что второй параметр "true to create a durable cookie (one that is saved across browser sessions); otherwise, false.". это не оно?
No. 20055    
Привет, это снова я.
Что нужно знать, чтобы претендовать на позицию джуниора, если а) профильной вышки нет б) опыта нет в) мне 26 (так ли это важно?)

Сейчас
  • по алгоритмам: как реализовать сортировки быструю, слиянием, выбором, вставкой и хипсорт; понимаю как они работают
  • по структурам данных: как реализовать стэк, очередь, кучи (min и max)
  • по Джанго: прочитаны туториал Джанго и Obey the Testing Goat; знаю как писать темплейты, виды, модели (слабовато), юниттесты средставами из коробки, функциональные тесты применительно к Файрфоксу с помощью Селениум и Геккодрайвер.
  • по git: простейшие понятия и операции вроде состояний файлов (modified/staged), создания и удаление ветвей, фаст-форвард коммитов, тегов.
Не знаю ничего о SQL-запросах, базах данных; контейнерах, виртуализации, Докере и деплое вообще; rebase, tracking ветви и многое другое, а самое главное — мало опыта. В большинстве случаев я имею представление как делать и откуда начинать поиск решения в случае чего, а не именно знаю как делать.

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

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

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

>алгоритмы
Мне кажется, это не так важно, как базовые знания целевого языка, типа как в нем из коробки работают коллекции, какой метод сортировки (раз уж ты её упомянул) использует в них стандартная библиотека, етц.

Что для джуниора важнее в контексте конкретно алгоритмов, так это понимание оценки сложности алгоритмов, т.е. та самая Big-O Notation: http://bigocheatsheet.com/

>структуры данных: как реализовать стэк, очередь, кучи (min и max)
Добавь сюда еще связанный список, но в то время как это могут спросить на собеседовании, в реальности тебе врядли придётся самому реализовывать эти структуры. Обычно любят спрашивать про различия между разными типами коллекций.

>Не знаю ничего
>о SQL-запросах, базах данных;
Не уверен, что тебе надо связываться именно с SQL, это надо смотреть по желаемому месту работы, но базово, тебе как джуниору надо уметь самое простое - создать/удалить базу, уметь создать/удалить в ней таблицу/коллекцию, уметь делать к ней CRUD-запросы: создание сущности, выборка сушности, обновление поля в сущности, удаление сущности.

>Не знаю ничего
>о контейнерах, виртуализации, Докере и деплое вообще
Это тебе как джуниору и НЕ девопсу знать не нужно. Об особенностях местного деплоя тебе местный девопс / админ / деплой инженер обязательно расскажет.

>по git
>Не знаю ничего о rebase, tracking ветви и многое другое
Это достаточно простые вещи, которыми легко овладеть если ты сделаешь какой-нибудь свой микропроект с использованием системы контроля версий. Но базово, от джуниора хотят чтобы он своими действиями с репозиторием не портил репозиторий, а поскольку для отдельных фич разработчики обычно создают отдельные ветки в репозитории, которые по окончании работы они сначала обновляют (например, делая rebase на master), потом отправляют на код ревью, а потом, по результатам код ревью, мержат в целевой бранч (например master), то тебе действительно стоит понимать суть базовых операций в системе контроля версий, особенно направление в котором они происходят (ты не представляешь, сколько людей мержат мастер в свой бранч, вместо того чтобы мержить свой бранч в мастер). Соответственно, кроме простейших операций тебе надо в контексте git знать про checkout, fetch, pull, rebase, cherry-pick, merge, push.

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

Теперь подождем кого-то кто сможет тебе прокомментировать твой пункт про Джангу.
No. 20079    
Здесь есть программисты на qt? Можете подсказать такой момент. Допустим у меня программа будет состоять из нескольких файлов исходников. В интернете рекомендуют собирать так, зайти в корень исходников и выполнить qmake --project; qmake; make. Что происходит когда я редактирую один файл исходников? Все cpp файлы перекомпилируются по новой, или только один, измененный?

Просто раньше, когда писал на крестах, использовал свой скрипт, который следил за изменениями, пересобирал только измененные cpp, а остальные .o оставлял нетронутыми. В qt все сложно, и свой велосипед к qmake уже не применить.
No. 20083    
>>20079
Make для того и придумали, чтобы заново генерировать только те объектные файлы, которые устарели. Если в Makefile правильно описаны зависимости, то лишних перекомпиляций не происходит. При сборке с использованием qmake определение зависимостей и генерирование Makefile происходят автоматически.
No. 20086    
>>20055
Больше, чем я?
No. 20087    
>>20083
Тогда я доверюсь qmake, спасибо!
No. 20090    
152914263364.png-(90.52KB, 1530×456, wewrt.png)
20090
Почему может не работать этот floodFill()? Программа просто завершает работу, ничего не говорит ни про стек, ни про ошибки сегментации.
No. 20091    
15291426764.png-(21.26KB, 753×87, srdytfug.png)
20091
>>20090
Пример запуска
No. 20092    
>>20090
Я не сишник, но сделаю осторожное предположение, что такое поведение будет если у тебя никогда не срабатывает условие:
if (c_current_color == c_old_color) {}

И тогда твой код считает что выполнение уже успешно завершено, т.к. семпл цвета не является цветом, который надо заменить. Проверь с помощью дебага, срабатывает ли это условие, попадаешь ли ты внутрь. Можешь по-настоящему брейкпоинтов поставить и завести дебаггер, можешь просто натыкать выводов в консоль в нужных местах (например, вывести c_current_color, потом c_old_color, потом результат операции их сравнения, может чего-то из этого нет или ты их неправильно сравниваешь)
No. 20093    
152917106428.png-(78.62KB, 1519×292, ertyrjyrtuy.png)
20093
>>20092
Нет, похоже это таки ошибка переполнения стека. Вообще код, тоже с ошибкой, но я ее пофиксил, один фиг - тот же результат. На маленьких изображениях, до 300х300, все работает. Больше - программа молча завершается. Видимо какой-то внутренний баг, и не выпадает сообщение о переполненном стеке. Надо переходить на другой алгоритм, с очередью или еще чем.
No. 20094    
>>20093
Ну, здесь не совсем понятно, зачем тебе рекурсия нужна как таковая. Ты можешь просто взять и линейно пройтись по всем пикселям картинки, и поменять им цвет, так? Если хочешь параллелизации, можно сделать дополнительный кусок кода который разобьет обработку на чанки по количеству ядер.
No. 20095    
>>20093
Каждый ход внутрь рекурсии кладёт (в теории) в стек все аргументы функции и ещё по мелочи. Делай заливку обходом в ширину.
И то, на ещё больших полотнах может быть проще закрашивать сразу большими квадратами, а потом уточнять.
No. 20096    
152921636142.png-(102.94KB, 1716×493, qe.png)
20096
>>20094
>>20095
Я взял алгоритм с очередью. Он не вылетает, и работает вполне себе быстро.
No. 20099    
152934992673.png-(46.21KB, 1366×768, 2018-06-18_22-19-47.png)
20099
asp.net mvc. метод Html.DisplayFor не отображает объекты типа short, когда использую рефлексию.
все это дело выглядит так: https://pastebin.com/uYcN4x5x

что я делаю не так?
No. 20100    
>>20099
Вижу такое:
>Html.DisplayFor() will render the DisplayTemplate that matches the property's type.
Т.е. когда ты ей даешь
>объекты типа short
Она ищет темплейт для вывода этого типа (скорее всего что-то типа short.cshtml), а его по какой-то причине нет. Думаю, что тебе надо или сконвертировать значение в строку, или создать темплейт для нужного типа. Подробнее тут: https://stackoverflow.com/a/6365658
No. 20104    
>>20100
> сконвертировать значение в строку
в таком случае все будет отображаться в виде строки, даже объекты типа bool, которые выводятся как миленькие чекбоксы будут строками (тру/фолс)
> или создать темплейт для нужного типа
выглядит слишком сложно. прикол в том, что без использования рефлексии числа нормально выводятся. и даже если я создам темплейт short.cshtml, вполне возможно, что все остальные числовые типы данных выводиться не будут...
пока сделал такую заглушку:
@if (propValue!=null && propValue.GetType().Equals(typeof(short)))

{
    @:@propValue
}

No. 20105    
>>20099
Там для каждого свойства из item возвращается голый object, из-за чего DisplayFor паникует и не знает что делать. По идее, у тебя вообще ничего отображаться не должно.
No. 20106    
>>20105
а можно как-то голый object распаковать в нужный (неизвестный) тип и скормить DisplayFor?
пытался делать что-то типа "var xxx = Convertor.ChangeType(propValue, prop.Type)", но метод возвращает object
No. 20107    
Посоветуйте .NET библиотеку по искусственным нейросетям. Многослойный перцептрон нужен.
No. 20108    
>>20106
Нельзя. Нужно вызывать DisplayFor для каждого свойства вручную.
No. 20112    
>>2010
Как минимум во фреймворке AForge.NET была библиотека для этого, но сам фреймворк уже довольно протух
No. 20144    
делаю jquery плагин для создания ajax пейджинга, который планирую в будущем использовать на всех моих сайтах. хочу чтобы кто-то поругал мой код, указал бы как лучше что-то сделать, а что делать не стоит. хочу чтоб все было классненько.
код тут: https://github.com/aenen/MovieVote/blob/master/Movie Vote/Scripts/paginationAjax.js
No. 20146    
Случайно вчера нашёл ftp://ftp.micronet-rostov.ru/linux-support/ — там 13 гб книг по программированию, CS, администрированию и прочему компьютер-рилейтеду.
Извините, если это не подходящее место для этого
No. 20150    
153029268845.png-(21.55KB, 452×217, Снимок экрана от 2018-06-29 19-44-14.png)
20150
>>20144
По поводу оформления кода -- Idiomatic.JS
На данных момент популярный стайлгайд.

После переделки по стайлгайду можно и уже саму логику посмотреть.
No. 20153    
>>20150
прочитал и вроде пофиксил все, что увидел (2 дополнения для проверки кода не ругаются).

посмотри, пожалуйста, как у меня со структурой и логикой. как-то волнует объект стилей, в котором куча длинных функций. еще я с функцией style[allPagesShrink].create намудрил в начале, хотелось сделать как-то попроще, но не получилось

и еще, как и где стоит функции и объявление переменных/вызов функций разместить? у меня все объявления/вызовы в начале, а функции ниже все вместе - это нормально?
No. 20163    
Есть один сайт, который я хочу попарсить, и во всех документах нужные мне элементы там во множестве <p>-тегов внутри одного <div>.

Для некоторых документов мне нужно вытащить и неким образом обработать эти теги, а для некоторых — только вытащить.

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

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

Где искать ответы на подобные вопросы (ну, кроме опыта)? В Gang of Four?

Это проект для личного пользования, не продакшен какой-нибудь жёсткий
No. 20167    
153095255383.jpg-(29.60KB, 714×182, Excessive Use of Bicycle Fatal.jpg)
20167
>>20163

> Где искать ответы на подобные вопросы (ну, кроме опыта)? В Gang of Four?

Внутри существующего открытого исходного кода.

В данном частном случае — в исходном коде нескольких существующих парсеров HTML.
No. 20168    
Ребята, есть csv файлик с датасетом протеганных картинок, нужно его обработать и поместить в бд. Там будут теги и урлы картинок. Нужно будет искать какой-то набор тегов и возвращать урл, с наибольшим количеством найденных тегов.
Вопрос в том, какую бд лучше использовать или же каким способом обойтись без нее?
No. 20169    
Ребята, есть csv файлик с датасетом протеганных картинок, нужно его обработать и поместить в бд. Там будут теги и урлы картинок. Нужно будет искать какой-то набор тегов и возвращать урл, с наибольшим количеством найденных тегов.
Вопрос в том, какую бд лучше использовать или же каким способом обойтись без нее?
No. 20170    
Посоветуйте книгу, что б освещались темы:
Параллельное программирование.
Проектирование многопоточных приложений
Реализация многозадачности в Windows (process, thread, fiber)

вот какие работы предстоит делать, что почитать что б быть готовым?

Практика 1

Способы межпроцессного взаимодействия.
Порождение дочерних процессов.
Создание серверного и клиентского приложений.
Взаимодействие посредством пользовательского межпроцессного сообщения.
Взаимодействие посредством сообщения WM_COPYDATA
Взаимодействие посредством механизма отображения файлов на память:

совместное использование двумя процессами общей области памяти,
совместное использование двумя процессами одного и того же файла.
Практика 2

Создание библиотек.
Статическая библиотека.
Динамическая библиотека. Неявная загрузка DLL. Явная загрузка DLL. DEF файлы.
Утилита DUMPBIN
Практика 3
Каналы.
Неименованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством неименованного канала на одном компьютере.
Именованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством именованного канала на разных компьютерах.

Практика 4

Потоки. Синхронизирующие объекты Windows
Запуск потоков.
Приоритеты потоков. Взаимодействие потоков с разными приоритетами.
Синхронизация потоков одного процесса. Критическая секция, событие, мьютекс, семафор, ожидаемый таймер.
Синхронизация потоков разных процессов.
No. 20171    
>>20169

Главным образом это зависит от нагрузки (то есть от того, как часто придётся выполнять поиск). Если менее 100 000 раз в сутки, то на основании https://sqlite.org/whentouse.html я рекомендую SQLite.
No. 20175    
>>20170
Попробуй почитать немного Танненбаума "Операционные системы". Теория там есть, а более практические вещи, я думаю, можно освоить только решая задачки.
No. 20176    
>>20170
>Реализация многозадачности в Windows (process, thread, fiber)
Как пользовать - Windows via C/C++
Как реализовывать - Windows Internals
No. 20187    
Есть тут люди, которые работали с Spring Security Oauth? Хочу прикрутить OAuth2 к RESTful API и сделать бесконечные refresh tokens для одного клиента. В гитхабе написано, что для этого надо поставить refresh token validity равное 0 или отрицательному числу (https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provide
r/ClientDetails.java), однако когда я так делаю, мне просто не выдаётся refresh token. Как это исправить и получить бесконечные токены?
No. 20212    
>>20187
Давай разбираться.

В DefaultTokenServices.java на строке 279 (https://git.io/fNY4U) в методе createRefreshToken можно увидеть, что если validitySeconds > 0, то возвращается инстанс DefaultExpiringOAuth2RefreshToken, а если нет - DefaultOAuth2RefreshToken. Т.е вроде бы всё честно.

Также там есть обертка вокруг getRefreshTokenValiditySeconds, которая заботится о том, чтобы вернуть стандартный срок (30 дней), если получить эти данные вообще по любым причинам не удалось.

Само обслуживание refresh token производится там же, в методе createAccessToken в строке 82 (https://git.io/fNY4E) и по коду оба токена попадают в токенстор

По этому коду, в самом худшем случае тебе бы возвращался токен на 30 дней, но никак не "просто не выдается refresh token". У тебя версия спринга точно соответствует той, код для которой ты смотришь в гитхабе?
No. 20213    
>>20212
Я не использую DefaultTokenServices. Вместо этого я использую JdbcTokenStore. Вот конфигурация сервера авторизации: https://pastebin.com/q9Rhf9AL
Если выставить в БД refresh_token_validity не 0, а какое-нибудь число, то refresh token нормально выдаётся.
No. 20214    
>>20212
>У тебя версия спринга точно соответствует той, код для которой ты смотришь в гитхабе?
Использую последнюю версию Spring Boot (2.0.3), так что всё должно быть норм.
No. 20221    
>>20213
>>20214
>JdbcTokenStore
В методе readRefreshToken класса JdbcTokenStore ( https://git.io/fNOPP ) видно, что этот стор бинарно маппит вычитанные данные на потомка OAuth2RefreshToken, которых два:
DefaultOAuth2RefreshToken и DefaultExpiringOAuth2RefreshToken, первому нужно 1 поле (сам токен), второму - 2 поля (токен и дата протухания)

Таким же образом токен сериализуется и хранится в бинарном виде.
Методы, которые это делают, лежат в SerializationUtils ( https://git.io/fNO1L )

Т.е. всё должно быть честно, если пришел и сохранился DefaultOAuth2RefreshToken, то именно его из стора и достанут.
А если пришел DefaultExpiringOAuth2RefreshToken, то достанут его.

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

При этом, для получения даты экспирейшона, ты используешь JdbcClientDetailsService (https://git.io/fNODG)
Который уже маппит данные из базы по колонкам. По ссылке как раз то место, где маппится протухание рефреш токена.

rs.getObject(9)

Как видим, оно ищет эту дату экспирейшона в колонке с индексом 9.
Мне кажется, что твои проблемы происходят где-то здесь. Возможно, они связаны со схемой таблицы или особенностями выброки (т.е. нарушается индекс колонок, или происходит ошибка когда оно пытается сделать readObject)
В любом случае, посмотри дебаггером что происходит в этом месте, и сообщи результат.

На всякий случай, вот схемы таблиц, которые пацаны в спринге пользуют для тестов:
https://git.io/v5cFT

>Я не использую DefaultTokenServices. Вместо этого я использую JdbcTokenStore.
Ну, официальная документация (https://git.io/fNOPl) предлагает тебе использовать свою реализацию AuthorizationServerTokenServices, которую ты создашь на базе DefaultTokenServices, а вот ей уже передашь свой JdbcTokenStore.

В любом случае, по твоей конфигурации, если верить AuthorizationServerEndpointsConfigurer ( https://git.io/fNOMy ), то если ты не указал свои сервисы, оно создаст тебе DefaultTokenServices подпихнув ему указанный тобой tokenStore
No. 20329    
Хацкеры, такая проблема
Майкрософт выебал меня в рот и лишил меня виндофона как основной специальности.
Стоит ли лезть в ксамарин, или пойти в другие ЯП?
No. 20332    
>>20329
Спрос на мобильную разработку с помощью Xamarin вполне себе есть, как в вопросе рабочих мест в обычных конторах, так и на фрилансе. Не то чтобы это было каким-то уж гипер-популярным, но своя ниша вполне себе есть, т.к. на бумаге это эпик вин: "нативная" (читай "не cordova/phonegap") разработка во многом одновременно под iOS и Android.
No. 20340    
>>>>20332
Спасибо
No. 20352    
153279923264.jpg-(1.65MB, 1200×1800, 1528985031858.jpg)
20352
Такой вопрос, хочется сделать программу, которой будут передавать клиентские программы какие-то данные, а она будет передавать эти данные всем клиентам, и мне нужны какие-то инструменты для этого, ну и учебник или что-то вроде того. Пишу на срр, раньше решал задачки и писал простенькие програмки с stl и gui библиотеками.
No. 20353    
>>20352

>хочется сделать программу, которой будут передавать клиентские программы какие-то данные
>а она будет передавать эти данные всем клиентам

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

>мне нужны какие-то инструменты для этого
Если выше я наванговал правильно, то тебе нужно воспользоваться вебсокетами (WebSocket), это такой клиент-серверный канал для потоковой передачи данных поверх HTTP, асинхронный, умеет учитывать подключенные клиенты, делать броадкасты и т.д.

Вебсокет-сервер и вебсокет-клиент можно встроить в любое свое приложение с помощью соответствующих библиотек.

>Пишу на срр
Есть готовые библиотеки для этого на плюсах:
https://github.com/eidheim/Simple-WebSocket-Server
https://github.com/mnisjk/cppWebSockets
https://github.com/zaphoyd/websocketpp
Вот даже сразу с клиентской и серверной частью, и примером как это делается:
https://github.com/uNetworking/uWebSockets
Qt тоже предлагает свою реализацию
http://doc.qt.io/qt-5/qtwebsockets-simplechat-example.html

Стоит отметить, пусть это и очевидно, что если сервер на плюсах, это не значит что клиент тоже должен быть на плюсах, можно хоть из браузера жаваскриптом это делать, т.к. им важно только быть подключенными к друг другу по HTTP.

Теперь, как этим всем добром пользоваться и что делать с архитектурой приложения. В первую очередь, стоит отметить, что примеров подобных приложений на базе вебсокетов дофига - описанное тобой (через призму моего вангования) вписывается в концепцию приложения-чата. Клиенты коннектятся к серверу, каждый клиент отправляет своё сообщение на сервер, а сервер рассылает все сообщения которые ему приходят на все подключенные к нему клиенты. Клиент, получив сообщение от сервера, просто выводит его на экран.

Другое дело, что готовый примеров на C++ для этого может и не быть, поэтому придётся сначала понять архитектуру на другом языке (на том же жаваскрипте), а потом переложить всё на свою C++ либу.

Туториалы по вебсокетам, чтобы понять что оно вообще:
https://www.tutorialspoint.com/websockets/websockets_overview.htm
https://www.html5rocks.com/en/tutorials/websockets/basics/
(^^ там еще ссылки на реализации на разных языках)
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

Туториал по чат-приложению (внимание, используется web-стек):
https://medium.com/@martin.sikora/node-js-websocket-simple-chat-tutorial-2def3a841b61

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