[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить
Имя
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 кБ.
  • Ныне 3187 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

Если что, задавай вопросы, уточняй, постараюсь подсказывать в меру своих сил.
No. 20354    
153280951660.jpg-(66.93KB, 1024×768, 15308886742410.jpg)
20354
>>20353
Таки да, вполне равносильно чатикам.
Спасибо, пойду читать про вебсокеты, попробую чатик запилить, если вопросы будут, обращусь
No. 20355    
Lua. Имеем что-то вроде такого:
for _, v in ipairs({a, b, c, d, e, f}) do foo(v) end

Можно ли это записать как-то короче, без всех этих лишних телодвижений с ipairs? Хочется чего-то в таком роде:
for v in a, b, c, d, e, f do foo(v) end

No. 20358    
Какие годные книги, ресурсы для изучения администрирования windows можете посоветовать нубасу? Нужно научиться работать с реестром, службы как правильно создавать, сетевые диски подключать, вообщем с сервером нормально чтоб работать. Я в этом вообще сейчас не разбираюсь.
No. 20359    
>>20355
>Можно ли это записать как-то короче, без всех этих лишних телодвижений с ipairs?

Не знаю насчет "короче", но без телодвижений с ipairs всегда можно по индексу:

myList = { a, b, c, d, e, f }
for i = 1, #myList do foo(myList[i]) end

No. 20361    
>>20358
>Нужно научиться работать с реестром, службы как правильно создавать, сетевые диски подключать, вообщем с сервером нормально чтоб работать. Я в этом вообще сейчас не разбираюсь.

Как насчет начать с видеокурса самого майкрософта в их MVA?

https://mva.microsoft.com/en-us/training-courses/windows-server-administration-fundamentals-8477

По ссылке - видео с закладками по темам.
>Network attached storage
Обещают в главе Managing Storage
>Работать с реестром
Обещают в главе Managing Windows Server 2008 R
>службы как правильно создавать
К сожалению, этого там не упоминается.
No. 20362    
>>20355
>>20359
Еще можно воспользоваться next, в обход pairs:

list = {a, b, c, d, e, f}
for k, v in next, list do foo(v) end

Или сжато

for _, v in next, {a, b, c, d, e, f} do foo(v) end

Сурс: https://www.lua.org/pil/7.3.html
Но там же из кода можно увидеть, что pairs - это не то что бы лишнее телодвижение.
No. 20363    
>>20359
Это-то понятно, что так можно. Но наличие временной переменной совсем не радует.

По существу, мне нужен list_iter вот отсюда: http://www.lua.org/pil/7.1.html (и лучше бы в варианте с (...) в качестве аргументов). Но же они ведь только в качестве примера его привели, а в стандартную библиотеку включать не стали, я правильно понял?
А добавлять "расширение стандартной библиотеки" в тот кусочек кода, в котором мне это понадобилось, будет, мягко говоря, неуместно.

P.S. А вот в перле всё пишется совсем просто и лаконично:
foo($_) foreach $a, $b, $c, $d, $e, $f;

Чем больше смотрю на lua, тем больше кажется, что это такой перл-инвалид, которому кучу всего нужного ампутировали. Хочешь чего-то сделать — а нету.
No. 20364    
>>20362
О, пока на прошлое отвечал, тут уже новое. Да, пожалуй, этот вариант выглядит лучше других, спасибо.
No. 20373    
153296045349.gif-(4.86MB, 300×377, f851e3948eba21e03cb48434c7c90af0.gif)
20373
>>20362>>20363
Next не гарантирует порядок, это всплывёт, если в таблице будут дырки. Вообще с ipairs самый нормальный вариант был, он делает практически то же самое, что самодельный list_iter, просто возвращает ещё и индексы, и, как по мне, более понятно выглядит, чем сырой generic for.
No. 20377    
>>20373
Спасибо, но в моём случае порядок, в общем-то, не важен.
No. 20404    
>>20361
Спасибо, еще нашел вот этот набор видео на youtube, пока по нему учусь.
https://www.youtube.com/playlist?list=PL1aqAoC4A0sWvR_pLp-mXYNqKst_Hb__W
No. 20414    
Как можно быстро освоить и понять язык ASN.1? По какому источнику лучше научиться? Я его вообще не понимаю.
No. 20415    
>>20414
А как у тебя с этой книгой, пробовал читать?
http://www.oss.com/asn1/resources/books-whitepapers-pubs/larmouth-asn1-book.pdf

Алсо, вижу короткую вводную справку:
http://luca.ntop.org/Teaching/Appunti/asn1.html
No. 20416    
>>20414
>>20415
Также официальный туториал:
http://www.oss.com/asn1/resources/asn1-made-simple/introduction.html?gclid=EAIaIQobChMIw9XI9sDW3AIVweWaCh3i8wLrEAAYAiABEgLq2vD_BwE
No. 20430    
>>20415
>>20416
От души, по-братски. Серьезная тема этот ASN.1
No. 20460    
Я собираюся писать многопользовательскую игру. Но я совсем не понимаю как работает взаимодействие клиент- сервер. Как происходит взаимодействие игрового движка (я выбрал Godot) с сервером. И всё такое прочее... Помогите пожалуйста
No. 20465    
>>20460
>Я собираюся писать многопользовательскую игру.
Уточни, многопользовательскую - это просто мультиплеер (я создал, друзья подключились), пассивный/асинхронный мультиплеер (как дарк соулз), или вообще как в ММО? От этого во многом зависит что у тебя будет сервером выступать. Для обычного мультиплеера сервером будет компонент, являющийся частью игры, т.е. он будет сам реализован на Godot, для второго случая это будет компонент на Godot + внешний компонент для матчмейкинга, для MMO это скорее всего будет основной "внешний" сервер + принимающая / синхронизирующая мир часть на Godot со стороны игрока.

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

На всякий случай, в документации к самому Godot описывается высокоуровневое API для построения мультиплеера, с клиентами, серверами и синхронизацией между ними: http://docs.godotengine.org/en/3.0/tutorials/networking/high_level_multiplayer.html
No. 20470    
Кавычки и апострофы, что мы знаем о них?
Если точнее то интересует для чего в С++ применяются апострофы? Насколько я выяснил только для одного отдельного единственного символа, например '▲'.
Вопрос возник в связи с тем что при попытке сравнения n-го символа из строки типа string (s[n]) с символом в кавычках ("▲") возникает ошыбка недопустимого сравнивания мух с бузиной, а при использовании апострофов ('▲') всё работает как надо. Почему так происходит?
No. 20471    
>>20470
Потому что в кавычках строковый литерал, а в апострофах - символьный. И если ты символ берёшь в кавычки, то он становится строковым литералом. Отсюда ошибка при сравнении символа со строкой.
No. 20472    
>>20471
В общем-то я так и подумал по найденному. Просто видимо я ещё не прочувствовал всю глубину строковости литералов. В Delphi таких проблем не было.
Пойду изучать матчасть.
No. 20473    
>>20472
В Питоне тоже странно, зачем ввели и кавычки, и апострофы, причем насколько я понял там они оба означают строки. Следуя принципам ведь можно было оставить только одно.
No. 20474    
153429188646.jpg-(281.69KB, 640×932, 15310549328240.jpg)
20474
>>20473
Там ещё и тройные есть. """
И тройные одиночные. '''
No. 20475    
153439475925.jpg-(103.64KB, 640×775, b366a3a8710d0cac203b26200cf82ba31496777080_full.jpg)
20475
Не знаю где спросить лучше, так что напишу здесь.

Пишу свою буру, хочу захостить её в облаке AWS. Знаю точно, что многие порносайты хостятся там, а Amazon они относится к хентаю? Особенно интересует позиция в отношении лоликона, знаю что в европейских странах приравнивается к ЦП. Какова вероятность абуз, если сам сайт будет рассчитан на русскоязычную аудиторию?
No. 20476    
>>20475
Такое обычно в ToS прописывают, там такое должно быть указано. Можно в конце-концов им написать в поддержку и напрямую спросить.

>Русскоязычная *booru
Было бы интересно увидеть. Gambatte!
No. 20477    
15344213818.jpg-(150.74KB, 430×607, e87cd57c514016e613cb3d70bb3b4fac.jpg)
20477
>>20476
Вот их TOS.
https://aws.amazon.com/ru/aup/
> > Offensive Content. Content that is defamatory, obscene, abusive, invasive of privacy, or otherwise objectionable, including content that constitutes child pornography, relates to bestiality, or depicts non-consensual sex acts.
С одной стороны, лоликон не ЦП, а с другой всё же ЦП в той же Германии и Ирландии. Только вот сервера у них в разных странах. В США вроде как должно быть вполне законно. Но оттуда пинги плохие, я хотел Франкфурт.
> Можно в конце-концов им написать в поддержку и напрямую спросить
Я стесняюсь. У них все мои персональные данные.
No. 20478    
>>20477

Проксируй, люк. Пусть банят прокси с nginx.
No. 20480    
>>20478
> Пусть банят прокси с nginx.
А смысл, если я собираюсь файлы хранить на S3?

Впрочем, я так прикинул. Реддит ведь ещё в 2009 переехал на амазон, а сабреддиты с лолями забанили только 6 лет назад (последний 3 года назад), и по всей видимости только из-за рекламодателей. Значит и проблем особо не было.
No. 20482    
153469736442.png-(70.61KB, 284×229, 2018-08-19_19-40-53.png)
20482
доделываю тут свой сайтик с картиночками и хочу, чтобы дата загрузки изображения отображалась на элементе пикрелейтед. проблема в том, что я не знаю в каком виде и где его лучше отобразить, чтобы еще больше не замусорить карточку изображения.

есть идеи, куда можно поставить дату добавления картинки, не перекрывая ее при этом еще больше чем сейчас?
No. 20491    
Вечер добрый Стив.
Пытаюсь подключить наполненную бд на Sqlite к django проекту, но встречаюсь со следующей ошибкой:
Exception Value:
no such column: guitar_instrument.id
На сколько я понял проблема заключается в том, что при migration поле id не генерируется, хотя должно, в migration/0001_initial.py оно есть.
Подскажи пожалуйста в какую сторону думать.
No. 20492    
>>20491
Вообще, трудно говорить без деталей по твоим моделям и миграциям.

В одном случае можно было бы добавить промежуточную миграцию, которая догенерит id.

В другом случае можно было бы добавить промежуточную миграцию которая удалит связь с guitar_instrument.id из целевой модели, а потом вторую промежуточную миграцию, которая вернет её обратно, в самом конце.

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

Сообщай о том что будешь пробовать и о результатах.
No. 20505    
153488902751.png-(52.13KB, 342×284, fe_example.png)
20505
>>20482
Надо просто расширить плашку вниз. Пример на пикрелейтед.
No. 20511    
>>20505
сделал так. спасибо!
No. 20512    
Что нужно учить, чтобы делать 2D игры?
No. 20513    
>>20512
Если ты хочешь сделать 2д-игру как техническое упражнение для себя самого - скажи, и я скорректирую ответ. Если ты хочешь сделать игру как продукт, или как что-то что ты просто хочешь довести до конца и потом показывать людям, то читай ниже.

>Что нужно учить, чтобы делать 2D игры?
В первую очередь нужно учиться гейм-дизайну, т.е. непосредственно проектировке игр, во-вторую - маркетингу, т.е. навыкам которые позволят выбрать целевую платформу, тип игры которую ты хочешь сделать, и пути вывода её на рынок (при этом не важно бесплатная игра или платная, даже с бесплатной игрой тебе бы хотелось чтобы про неё узнало как можно больше людей). Потом уже ты можешь подбирать конкретный инструментарий для создания своей игры и её компонентов, и целенаправленно получать знания в нужных для разработки конкретной игры областях.

Рекомендую посмотреть такие курсы:
https://www.coursera.org/learn/game-design
https://www.coursera.org/learn/gamedesign

Последнее взято из этого списка:
https://www.coursera.org/specializations/game-development

От себя добавлю, что после того как ты поймешь, какую игру ты хочешь сделать, будет полезно сделать "уменьшенную копию" этой игры, т.е. маленькую, очень короткую игру, но с теми же принципами которые ты хочешь заложить в свой основной проект. Её надо сделать от начала и до конца, и обязательно выпустить. Цель - пройти все этапы процесса разработки, понять, какие из них более важные чем другие, что дается просто, а что тяжело, и как бороться с тем, что результаты любого неизвестного творчества людей не очень интересуют. При этом, и это важно, не потратив кучу времени, и не зависнув в аде девелопмента, постоянно переделывая один и тот же проект с начала.
No. 20525    
153520080082.jpg-(179.32KB, 1024×768, Untitled-1.jpg)
20525
Мне вот тут надо написать небольшое оконное приложение для сохранения кусков текста. Что-то на подобие телеграма (по интерфейсу) или simplenote (но без привязки к аккаунту
Три окошка. В первом кажется по програмистски оно называетя lable вводится название пасты, которую ты хочешь записать. Ниже в таком большом окошечке вставляется сам текст. И при каждом изменении он автоматически сохраняется. Ну или каждые десять секунд пока изменения идут
Между пастами можно переключаться через менюшку слева. Там автоматически появляется то название, которое ты ввёл

Посоветуйте на чём можно это реализовать? У меня есть мысль- на delphi. Но я с ним ни когда не работал, и не знаю вообще, что это за зверь такой. Можно попробовать на C++ с фреймворком GTK/QT, но они болшие и сложные. Я уже пытался с ними разобраться и у меня это не вышло.

Что можете посоветовать начинающему недопрограмисту?
No. 20526    
>>20525
С точки зрения современных реалий, я бы советовал JavaScript во фреймворке-обертке Electron (если совсем упрощать, то это Chrome без своего интерфейса). Если что-то более серьезное, то бери таки C++/Qt, только интерфейс сразу делай на QML - это должно быть проще и быстрее.
No. 20527    
>>20525
Если это десктопное приложение на десктоп винды, то бери C# + WPF/WinForms: https://visualstudio.microsoft.com/vs/community/
Легко, быстро, низкий порог вхождения и такая одноразовая хуйня делается достаточно быстро Давай за 20 баксов тебе сделаю, лол

Всяческие не рекомендую делфи — ёбнешься с доставкой, да и сам по себе это древний кластерфак.
No. 20531    
>>20526
> это Chrome без своего интерфейса
Можно поподробнее? Я ни чего не понял
No. 20533    
>>20526
> С точки зрения современных реалий
Ладно, и наверное последний на сегодня глупый вопрос. А с точки зрения ушедших в прошлое реалий- есть что-нибудь?
Мне мегапроизводительное и сверхкрассивое не надо. Посто чтоб работало и этого хватит
No. 20534    
>>20531
Это специальный фреймворк ElectronJS, который базируется на основе Chromium и NodeJS и по своей сути является куском браузера Chrome без стандартного интерфейса. Основная идея в том чтобы написать итоговое приложение с использованием веб-технологий (JavaScript, HTML, CSS, фреймворки типа VueJS/ReactJS и т.д.), но при это оно существовало в виде "нативного" приложения.

>>20533
Ну вот старый подход это как раз таки набросать мышкой на Delphi. Сейчас просто это уже ретро.
No. 20535    
153522682272.png-(681.98KB, 1600×1200, [SIG794cde424ed9adea9829d4888ddee0eb4fd2eba3f8e339.png)
20535
>>20533
Тебе для чего, лол? Под винду используют WinAPI для C, C++ и Ada; под прыщи не знаю, вроде GTK или QT; для кроссплатформы — Java и Swing.

Хеллоу-ворлд под Windows называется Winnie, он же является основой для любого Windows-приложения, н-р https://www.transmissionzero.co.uk/computing/win32-apps-with-mingw/. Просто берётся он и дописывается в стиле «рисуем сову» в обнимку с MSDN.

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

З.Ы.: Тебе надо ещё решить вопрос о выборе базы данных.
No. 20536    
15352285014.png-(15.42KB, 596×400, изображение.png)
20536
Ну вот я какой-то простенький интерфейс создал на два textbox-a
Как может называться та фигня слева, которая позволит создавать там новые слоты под пасту и выбирать уже существуюшие?
No. 20537    
>>20536
В сторону ListBox-а смотри.
No. 20539    
знаком кто с "itunes search api"? ищу по нем фильмы, но по одному лишь имени результаты получаю не точные. есть ли возможность туда передать год релиза фильма, чтобы получить результат поточнее? гугл не помог
No. 20540    
>>20539
Если я правильно понял, то это именно то, что тебе надо: https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/ - тут в разделе аттрибутов как раз есть всякие releaseYearTerm и прочее добро
No. 20542    
>>20540
кажется это не оно. если я поставлю этот атрибут, то он просто выведет мне фильмы, которые вышли в указанном году. скажем, хочу получить робокопа 1987 года, отправлю https://itunes.apple.com/search?term=robocop 1987&country=us&media=movie&attribute=releaseYearTerm - 0 результатов. если в term оставить только год - 50 результатов.

наверно, придется в цикле сравнивать год выхода фильма среди того, что мне отправят
No. 20557    
>>20542
Да, судя по всему, я не внимательно прочитал их примеры и описания, получается, что в их случае атрибуты это не дополнения к изначальному поисковому запросу, а просто другой способ делать этот запрос. Тогда вероятно никаких вариантов, кроме перебора циклом результатов нет.
No. 20615    
>>20535
Неужели я встретил человека, который пишет на Аде? Для чего? Легаси?
Учил её в вузе, были на ней лабы по многопоточности и параллельным системам.

>>20525
Если вариант, то сделай браузерное. (да, я видел слово "оконное", но всё же)
Браузерное можно на чем угодно, питон/руби/джава/...., и сделаешь быстрее и проще, чем тру оконное.
Оконное на винде - шарпы, джава+swing на винду/линукс.

>>20170
> Параллельное программирование.
Специфически для каждого языка/библиотеки/спецификации лучше ищи. Например,

https://javarevisited.blogspot.com/2016/06/5-books-to-learn-concurrent-programming-multithreading-java.html

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

>Реализация многозадачности в Windows
WinAPI например.

>>19763
>Прочитал за три месяца, изучил концепции, наваял пару прог, утилиты да браузерку на web сокетах.
И как на собесах было? Сколько искал, сколько раз походил?
Сам тоже на го ставку делаю, что-то джуновакансий очень мало, так что я просто сижу и дрочу учебу/разные-проекты вечерами. Чёт по-хорошему хочу очень много всего знать и уметь. Ну, и хочу, и думаю, что это надо будет там на собесах/работке.
No. 20616    
>>20025
Вот так работаешь несколько лет с Oracle DB и PL/SQL, мониторишь /dev, но стоит только отчаяться и подзабить - всплывают вопросы. Эх.
No. 20630    
А можете объяснить, как сервер на питоне написать? Нашел модули socket и socketserver, но кроме примеров ничего не понятно.
No. 20632    
>>20630
Какой именно сервер тебе надо tcp, udp или может http?
No. 20633    
>>20632
TCP.
No. 20634    
>>20633
import socket

bind_ip = '0.0.0.0'

bind_port = 9999

# Создать TCP сокет

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# Привязать сокет к адресу

server.bind((bind_ip, bind_port))

# Режим прослушивания входящих подключений

server.listen(5)

# Ожидать подключение клиента

# как только клиент будет подключен функция вернет сокет для соединения с клиентом и удаленный адрес

client_sock, address = server.accept()

# Прием и отправка данных между клиентом и сервером

request = client_socket.recv(1024)

client_socket.send('Hello world!')

# Окончание заботы с клиентом

client_socket.close()


Прием входящих соединений (метод accept) лучше делать в отдельном потоке.
No. 20635    
>>20634
Я на основе примера так сделал:

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
#self.data - сокет, подключенный к клиенту
#self.<кто-то>.address - IP и порт
self.data = str(self.request.recv(4096), "utf-8")
print(self.client_address[0] + ': {}'.format(self.data))
self.request.sendall(bytes('Message successfully sent', "utf-8"))

if __name__ == "__main__":
HOST, PORT = "localhost", 9999

with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
server.serve_forever()
No. 20644    
Клиент не работает - хост разрывает подключение после первого запроса. Исходник сервера:
'import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
#self.data - сокет, подключенный к клиенту
#self.<кто-то>.address - IP и порт
self.data = str(self.request.recv(4096), "utf-8")
print(self.client_address[0] + ': {}'.format(self.data))
self.request.sendall(bytes('Message successfully sent', "utf-8"))

if __name__ == "__main__":
HOST, PORT = "localhost", 9999

with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
server.serve_forever()
'
Исходник клиента:
'import socket
import random

HOST, PORT = "localhost", 9999
plid = 'null'
data = ' '.join([plid, 'init', str(random.randint(0, 10)), str(random.randint(0, 10))])
#SOCK_STREAM = TCP-сокет
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((HOST, PORT)) #подключаемся к серверу
sock.sendall(bytes(data + "\n", "utf-8"))
plid = str(sock.recv(1024), "utf-8")
while True:
data = ' '.join([plid, input()])
sock.sendall(bytes(data + "\n", "utf-8"))
received = str(sock.recv(1024), "utf-8")
print('Field: {}'.format(received))'
Что там не так?
No. 20651    
>>20644
TCPServer закрывает соединение при выходе из handle. Если хочешь, чтобы оно разрывалось по инициативе клиента, то сделай цикл в handle. Только учти, что при использовании просто TCPServer без ForkingMixIn или ThreadingMixIn обработка каждого запроса синхронная, то есть к обслуживанию следующего запроса сервер приступает только после завершения обслуживания текущего.
No. 20658    
>>20651
А если клиентов несколько, вариант с циклом в handle работать будет?
No. 20668    
>>20658
Одновременно с несколькими клиентами этот вариант работать будет только в том случае, если обработка каждого запроса выполняется в отдельном процессе (ForkingMixIn) или потоке (ThreadingMixIn). В официальной документации есть пример ThreadedTCPServer, использующий TCPServer с ThreadingMixIn, можешь основываться на нём.
No. 20677    
Говорят, что если код написан девочкой, то у него будет хуже качество, это правда или выдумки?
No. 20678    
>>20677
Качество кода зависит от знаний стандартов написания кода и от опыта в программировании в текущей области.
К полу и возрасту человека качество кода не имеет отношения.
No. 20679    
153772048215.jpg-(379.01KB, 516×722, 014 - 516x722@32 [SIG99ef75cf9b35a2da28f56c8923ad8.jpg)
20679
А Соус, я гляжу, решил выпилить поддержку IE8. Забавно, поскольку у меня с других не постится.

>>20615
>Для чего
Скорее как более удобный С с классами. На ней очень сложно что-то писать, поскольку там даже коллекций нормальных нету. Жалко Аду, but nowadays Ada stays for nothing. На неё, похоже, сами разработчики забивать стали, насколько я могу судить по событиям этого года.
No. 20680    
153774599966.gif-(249.72KB, 388×472, 1528985477808-pol-2.gif)
20680
Я пытаюсь написать rest api и у меня возник вопрос.
Допустим, нужно отправить пост и загрузить несколько тяжёлых файлов к нему. Текст в посте должен быть обязательно и если его нет, или один из файлов не подходит — нужно вернуть ошибку. Стоит ли при обработке ошибки загружать файлы и создавать ресурс, предлагая его "дописать", или сбрасывать состояние и требовать повторной отправки файлов? Как лучше поступить?
No. 20681    
>>20678
А это вообще хорошо или нет, что правила сообщества опенсорс-разработчиков ядра linux теперь будут выставлять приоритет для всяких "интересных личностей"?
No. 20682    
>>20681

Нѣтъ.
No. 20683    
153778552657.jpg-(68.00KB, 640×640, anime-girl-cat-ears-profile-pictures-10.jpg)
20683
Хочу вкотиться с нуля в разработку интеллектуальных алгоритмов (например, процедурная генерация контента нейросетью по изученным ею образцам). Но боюсь что эти знания все равно не найдут практического применения на такой системе как у меня (корыто с i3 2.13 GHz и 3 GB RAM). Может, есть в сети такая облачная платформа, чтобы на ней тестировать свои проекты?
Примерно так: у меня будет код ИНС которая на этом ПК сможет изучить 50 картинок, и длиться это будет трое суток, а генерировать новую картинку она будет 3 часа. Практически никакого полезного результата. Вместо этого я могу отослать код в облако (вычислительную ферму) где за сутки она изучит 5000 образцов, а выдавать новый будет за 30 секунд. И конечно надо чтобы было бесплатно - просто залогинился на сайте, заливаешь код и тестируешь его выполнение на удаленном сервере. Можно такое как-нибудь организовать?
No. 20684    
>>20683
Или в крайнем случае найти добровольца, который имеет мощную систему, и если посчитает интересной мою ИНС, то запустит ее у себя?
No. 20688    
153780986759.jpg-(237.11KB, 700×700, Millhiore_Firianno_Biscotti_full_826889.jpg)
20688
>>20677
%Серия похабных шуток про известный всем русским метод делания вещей, которые я только что сам придумал и сам посмеялся.%

>>20680
Зависит от модели данных. Ты создаёшь ресурс, у тебя ресурсом что является? Ты не можешь сделать в рамках REST болтливое API, сохраняющее состояние на сервере, — это будет уже не REST.
No. 20690    
153781225366.jpg-(122.23KB, 1280×1175, photo_2018-09-24_20-51-02.jpg)
20690
>>20688
Пишу очередную имиджборду, если что.
> у тебя ресурсом что является
Ресурсом является пост. Который имеет id, отображаемый id (так как разделов много, в каждом свой счётчик), текст поста и список файлов. Файлы хранятся в отдельной таблице, за конкретным постом не закреплены, здесь только ссылки на них.
> Ты не можешь сделать в рамках REST болтливое API, сохраняющее состояние на сервере, — это будет уже не REST.
Я уже и так не особо уверен, что у меня REST получается. Например у меня уже выходит дублирование: можно получить тред (вместе с постами), и обратившись к другому ресурсу, только посты из треда.
No. 20691    
>>20683
> Может, есть в сети такая облачная платформа, чтобы на ней тестировать свои проекты?
Есть. Гугл не работает больше с физическими лицами, так что твой выбор — Амазон (или Ажура, но с ней работать не приходилось)
> у меня будет код ИНС которая на этом ПК сможет изучить 50 картинок
Что-то очень замороченный алгоритм у тебя, что так долго обучается на таком малом числе картинок.
> И конечно надо чтобы было бесплатно
Так не бывает. Но у амазона есть бесплатный период с довольно слабым инстансом, зато на целый год. Но я бы на твоём месте отдал пару баксов, купил инстанс помощнее и просчитал всё за пару часов.
No. 20693    
153781676285.jpg-(790.67KB, 2250×1800, Millhiore_Firianno_Biscotti_full_971557.jpg)
20693
>>20690
Щас меня побъють:
/boards/{board_id}/threads/{thread_id}/posts/{post_id}/files/{file_id}
Например:
POST /boards — HTTP/1.0 401 Unauthorized
POST /boards/{board_id}/threads/ — HTTP/1.0 201 Created
POST /boards/{board_id}/threads/{thread_id}/posts — HTTP/1.0 201 Created
POST /boards/{board_id}/threads/{thread_id}/posts/{post_id}/files — HTTP/1.0 201 Created
Чо?
No. 20694    
153781757516.jpg-(75.44KB, 1119×1280, photo_2018-09-24_22-32-22.jpg)
20694
>>20693
> Щас меня побъють
Я их отвлеку. Вот так я наметил схему пока что https://rentry.co/6g2gm
> POST /boards/{board_id}/threads/
Не имеет смысла. Новый тред всего лишь частное нового поста, у которого не указан thread_id в реквесте.
> POST /boards/{board_id}/threads/{thread_id}/posts
Вообще, я больше за плоскую flat же иерархию.
> POST /boards/{board_id}/threads/{thread_id}/posts/{post_id}/files
То есть создавать файлы отдельным запросом, уже после создания поста? Думал о таком варианте, но что-то меня в нём смущает.
No. 20695    
Можно ли использовать PyQt, а точнее - QtNetwork, чтобы не мучаться с TCPThreadingMixin?
No. 20696    
>>20695
Тянуть Qt в зависимостях несколько странно. Попробуй поискать другие библиотеки, или напиши конкретно что хочешь сделать.
No. 20697    
>>20691
>Что-то очень замороченный алгоритм у тебя, что так долго обучается на таком малом числе картинок.
У меня пока нет никакого алгоритма, просто корыто очень слабое. А вообще, плохо представляю, какие там требования к системе, а в кодинге я даже не джун, а шинку.
>Так не бывает. Но у амазона есть бесплатный период
Взаимоисключающие параграфы.
>зато на целый год
А как они проверяют личность, чтобы предотвратить повторную регу через год? Нужно выслать скан паспорта?
>я бы на твоём месте отдал пару баксов, купил инстанс помощнее и просчитал всё за пару часов.
Платить есть смысл в двух случаях: если твой проект коммерческий и ты им отобьешь затраты, или если ты заранее уверен, что получится годнота, за которую не жалко заплатить. А я даже не знаю что получится- то что хотелось бы, или крипотная кривота которой не поможет даже ручная обработка в фотошопе.
No. 20698    
>>19666
>Пополняемая база знаний: http://pastebin.com/AGhLZppH
До сих пор ничего нет про архитектуру ИНС?
No. 20699    
>>20697
> Взаимоисключающие параграфы.
Это не так. Просто на том железе из бесплатного периода только гостевуху хостить.
> А как они проверяют личность, чтобы предотвратить повторную регу через год? Нужно выслать скан паспорта?
Никак, можно через год новый аккаунт зарегистрировать. Кто-то так и делает.
> А я даже не знаю что получится
Ну ты можешь практиковаться и вылизывать свой алгоритм на персоналке, а когда захочется большего и не захочется ждать, то купить какой-нибудь инстанс с 16 ядрами и 32 оперативки за 50 центов/час и прогнать всё быстренько.
No. 20700    
Code Writer, который встроен в Windows 10 - норм программа, или лучше скачать Eclipse?
No. 20701    
153782656836.jpg-(601.04KB, 2560×1600, 025 - 2560x1600@32 [SIG9a086d6823b5e25e5d2a3eaf966.jpg)
20701
>>20694
https://javabeat.net/rest-api-best-practices/
https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

>Не имеет смысла.
Как клиент получит список тредов для данной доски? Предлагаешь грузить в него все 10_000 постов и выбирать те, у которых установлено свойство is_op_post? А клиенту плохо не станет?

>Вообще, я больше за плоскую flat же иерархию.
Как ты сможешь тогда разрулить собственные же ограничения и коллизии идентификаторов? Поведение методов REST API не зависит от того, какие методы вызывал клиент раньше и с каким результатом они были выполнены, иными словами, сервер не хранит состояние для каждой сессии, он максимум знает только о правах доступа для сессии.

>То есть создавать файлы отдельным запросом, уже после создания поста? Думал о таком варианте, но что-то меня в нём смущает.
Иначе ты или отправляешь всё в одном POST-e и сервер либо принимает его, либо отвергает, или делаешь файлы отдельным ресурсом, как в Википедии, но тогда клиент сможет аплоадить их без создания поста. В Вики, кстати, много таких файлов, которые загружены, но никуда не прикреплены.

Вообще, можно сделать и так:
/boards/{board_id}
/threads/{thread_id}
/posts/{post_id}
Тогда в POST-е с постом надо указывать board_id и thread_id. Этот подход плох тем, что последующие GET-запросы не кэшируются, т.е. клиент постоянно будет дергать сервер или попадёт в задницу, получив из кэша левые данные.
No. 20702    
>>20701
> Как клиент получит список тредов для данной доски?
Я же скинул выше https://rentry.co/6g2gm
/threads?board_id={id}
> Как ты сможешь тогда разрулить собственные же ограничения и коллизии идентификаторов?
Не понял, можно пример?
> и с каким результатом они были выполнены
Поэтому и спрашивал. Но вообще можно в случае удачного поста возвращать его /posts/{id}
А в случае неудачи /posts/{id}/error
> делаешь файлы отдельным ресурсом, как в Википедии
Так и хотел в любом случае. Потому что буду проверять файлы на уже их наличие на диске, и если они есть, то не сохранять, а просто прикреплять уже ранее загруженный.
> тогда клиент сможет аплоадить их без создания поста
Не сможет, если я не напишу для этого api.
> Тогда в POST-е с постом надо указывать board_id и thread_id
Спасибо, а то я не знал! Вообще я о другом спрашивал.
> последующие GET-запросы не кэшируются
Подумаю над этим, как разберусь с остальным.
No. 20703    
>>20701
> последующие GET-запросы не кэшируются
Буду передавать E-tag в заголовке для /thread/{id} и last_modified в теле для списка тредов. Это если надо одним запросом опросить, например, закладки. Тогда следующим запросом можно получить только новые посты для тредов что их имеют.
No. 20704    
153783572417.jpg-(486.71KB, 1280×720, 019 - 1280x720@32 [SIG03a5561860edf917af9630ab0ac3.jpg)
20704
>>20702
https://spring.io/understanding/REST
http://www.restapitutorial.ru/lessons/restfulresourcenaming.html

>Я же скинул выше https://rentry.co/6g2gm
Так как ты поместил это под спойлер, я решил, что это — необязательная информация.
>/threads?board_id={id}
Что вернёт GET /threads ? GET /posts ?
>Не понял, можно пример?
1) Пост с номером 1 есть во всех тредах. Ты собираешься уникальные идентификаторы тредам и постам придумывать и мапить их на отображаемые у клиента идентификаторы?
2) Можно создавать посты без тредов, а файлы аплоадить без постов, или таки между тредами, постами и файлами есть какие-то отношения, которые надо отображать в URI?
>/posts/{id}/error
То есть ресурс “posts/{post_id}” будет содержать поле “error”? А при попытке создания поста с уже существующим id сервер будет изменять это поле и клиентский GET по этому id вернёт всем Resource modified? А при неудачной попытке создания нового поста сервер создаст пустой пост с таким id и полем “error”, а другому клиенту вернёт 418 Already created? :D
>Так и хотел в любом случае.
У каждого файла будет своя страничка? Типа «Загружено VIP-пользователем Васей такого-то числа. Понравилось 1127 пользователям. Прикреплено к таким-то тредам пользователями Петей, Димой и Дашей. [Мне нравится], [Поделиться с друзьями], [Скачать], [Купить VIP-аккаунт и скачать полную версию]» :D
>Потому что буду проверять файлы на уже их наличие на диске, и если они есть, то не сохранять, а просто прикреплять уже ранее загруженный.
А клиенту разве не наплевать, как файлы хранятся на сервере? Он делает GET posts/{post_id}/files и ожидает получить список урлов, а клиент автора поста делает DELETE posts/{post_id}/files/{file_id} и ожидает, что файл будет удалён.
>Не сможет, если я не напишу для этого api.
Клиент отправил пустой пост с файлами. Ты начал разговор с этого кейса, теперь говоришь, что он этого не может.
>Подумаю над этим, как разберусь с остальным.
Потом окажется, что проще переписать.
No. 20705    
>>20695
Может тогда попробуешь использовать tornado?
https://www.tornadoweb.org/en/stable/tcpserver.html
No. 20711    
153788756825.jpg-(113.99KB, 629×900, Millhiore_Firianno_Biscotti_full_717120.jpg)
20711
>>20706
>Без фильтров? Последние N тредов/постов.
Иными словами, API неконсистентно, и разобраться в нём без бутылки жс-мартышка не сможет.

>Эээ, нет. Внутри треда посты вообще никак не нумеруются, кроме как по id и display_id.
>>Ты собираешься уникальные идентификаторы тредам и постам придумывать и мапить их на отображаемые у клиента идентификаторы?
Ну и где «нет», когда «дат».

>Если пользователь пытается создать пост не указав thread_id, то он по-умолчанию получит новый тред.
Это ошибка сервера в данном случае, хотя должна быть ошибка клиента. Сервер должен вернуть 422 Unprocessable Entity, например.

>В URI эти отношения отображать не нужно.
Есть ещё хоть одна причина кроме той, что ты не знаешь как хэндлить такие случаи?

>Попытка создать ресурс с существующим id = попытка сделать в базу запись с уже имеющимся primary key = ошибка движка, а не api.
Это ошибка клиента. Сервер должен вернуть 405 Method Not Allowed.
API — это набор методов для взаимодействия. Если ты лапоть мимо рта проносишь, это твоя ошибка, а не лаптя, щей или мамы.

>Не пустой пост, а пост в котором уже присутствует частичная информация.
Кому она нужна, если сервер уже вернул клиенту 4хх ошибку с пояснением, что не так? Чтобы быстрее получить отказ в обслуживании?

>404, если другой клиент попытается в GET, 401, если в PUT.
А если остальные 98 попытаются POST?

>Откуда ты такой бред берёшь, сладкий?
Всего лишь довожу до абсурда твои идеи, милый. Это ты решил, что файл достоин вынесения в отдельную сущность, а не я, значит делаешь ты какой-то ВКонтакте а не анонимную борду.

>> клиенту разве не наплевать, как файлы хранятся на сервере?
>Именно так.
>Своя запись в базе и url где он лежит.
>Ожидать можно что угодно, но файл не будет удалён. Будет лишь удалена ссылка на файл для этого поста.
Ты опять себе противоречишь, милый.

>Ты и сюда можешь отправить пустой пост, с одними лишь файлами. Это корректный пост.
>Это корректный пост.
А я помню, что ты спрашивал, как разруливать такую исключительную ситуацию, милый.
>>Текст в посте должен быть обязательно и если его нет, или один из файлов не подходит — нужно вернуть ошибку.
А теперь ты говоришь, что это не исключительная ситуация.
No. 20712    
153789241734.jpg-(88.73KB, 1200×1280, IMG_20180925_191940_141.jpg)
20712
>>20711
Спасибо.
No. 20718    
>>20677
Шутка про производные от названий частей тела, являющихся первичными признаками пола прилагательные и их положение на оси "плохо-хорошо".
No. 20719    
Девочка-улыбнись прочитала документацию об архитектуре нейросети, которую ей скидывали. Думала что там будет не более сложный гайд, чем по установке Gentoo. А там.. вообще! уйма каких-то непонятных слов, или известных, но в непонятном значении. Раскидались словами, вместо того чтобы объяснить, что писать в файл, куда сохранять, какие программы ставить. Кусочки кода чтобы копировать и вставлять, заменяя параметры на нужные. Мне ж не новый Dwarf Fortress разрабатывать, а простенькую утилиту надо - показываешь ей папку с картинками, она учится по ним и делает картинки.
Или допустим эта статья https://habr.com/company/yandex/blog/314508/ , она на русском и вроде бы понятная. Но там вместо образцов кода какие-то схемы, будто бы надо их рисовать в пейнте и прогонять через интерпретатор.
Даже чтобы запустить у себя уже готовый код машинного обучения, скачанный с github, надо сначала поставить несколько каких-то пакетов, и то не факт что оно потом сработает. У меня еще и винда, может на линуксе было бы проще устанавливать в терминале. Почему не сделают обычный программный пакет, который может из коробки работать с изображениями? Для примера, ABBYY Finereader может распознавать текст и им вполне возможно пользоваться без навыков кодинга, так почему нет такой же коммерческой проги но для распознавания и построения картинок?
No. 20720    
>>20719
>простенькую утилиту
>показываешь ей папку с картинками, она учится по ним и делает картинки.
Ты родился не в том веке.
>коммерческой проги
Которую ты бы всё равно спиратил.
No. 20721    
>>20720
Чиочую. Задача-то недетерминированная, и уже потому сложнее чем любой dwarf fortress по определению.
No. 20733    
Скажите мне, какой из этих вариантов лучше и почему?

Вариант 1:
if(cond) {

   expr1;
   expr2;
   expr3;
} else {
   expr2;
}

Вариант 2:
if(cond) expr1;

expr2;
if(cond) expr3;

Мне не нравятся оба, в первом дублируется expr2, во втором — if(cond). Возможно, есть третий?
No. 20734    
>>20733
expr_2;

if cond then
expr_1;
expr_3;
end if;

-- Ты про порядок ничего не говорил :o)
--
-- Ну а иначе, it depends... Что это за выражения?
-- Они сложные?
No. 20735    
>>20734
>Ты про порядок ничего не говорил
Не, порядок важен. Если бы так было можно — вопрос бы не стоял ^_^

>Они сложные?
Скажем так, если какое-либо из них вынести в отдельную функцию, то один только ее вызов займёт больше места, чем занимает само это выражение.
Для определенности можешь считать, что cond — это что-то уровня А > B, а expr2 — уровня foo += bar.
Но мне всё равно не нравится, что одно из них приходится повторять дважды.
No. 20736    
>>20735
Тогда для чукчи-читателя предпочтительней первый вариант, где весь экшн для каждой ветки собран в одном месте — так понимать, что делает код, легче. Да и вообще, как-то не приветствуется дробление условия, потому что уже автоматом начинаешь искать, где изменилось cond с первого раза.

>Но мне всё равно не нравится, что одно из них приходится повторять дважды.
Ну а что делать... Вообще, чтобы не думать над такими вещами (ибо это всегда малопродуктивно), лучше взять какие-нибудь Style and Quality Guidelines и делать всё по ним.
No. 20737    
>>20733
С какой точки зрения лучше? Если вычисление
cond
не может иметь побочных эффектов или зависеть от expr1 или expr2, то оптимизирующий по скорости компилятор скомпилирует оба варианта в примерно одинаковый машинный код, который, вероятно, будет близок к варианту 1, чтобы было меньше ветвлений и cond не вычислялось дважды. Если тебе больше нравится то, как выглядит код в варианте 2, и не нравится повторение cond, то можешь сохранить его значение в булеву переменную и во втором if использовать её.
No. 20738    
>>20737
1. Условие всегда должно быть идемпотентным.
2. Человек, который пишет нечитабельное гумно, в команде не нужен.
3. Компилятору всё-равно, ещё ни один не жаловался.

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

Другой точки зрения тут быть не может.
No. 20739    
>>20738
> оптимизирует код для компилятора руководствуясь представлениями 20-и летней давности
Мне как-то на лабе оценку снизили за то, что не перемножил на калькуляторе две константы перед присвоением переменной. Не int x = 5 * 8, а int x = 40;
No. 20740    
>>20739
Ну, это проблема образовательной системы в этой стране, т.е. сидит старый чудак на букву «м» и учит тому, что было лет 10-20-30 назад. Хотя даже если взять довольно древний “Ada 95 Quality & Style”, там особо написано, что даже не выдумайте заниматься подобной хѣрнёй — вы код для людей пишете, а компилятор один хрен константы сам перемножит, к нужному типу приведёт и вас спрашивать не будет.
No. 20741    
Ну что же, вывод ясен. Победителем объявляется первый вариант, как более человекочитабельный и требующий меньше вычислений.

>>20733-кун
No. 20742    
>>20736
>Style and Quality Guidelines
Хм…
Большинство документов такого рода, которые мне попадались, отражают, в основном, сторону, которую их автор занимает холиварах "пробел vs. таб", "перевод строки перед {" и тому подобная мишура, решаемая у нормальных людей одним запуском чего-нибудь типа Artistic Style.

Таких, в которых подробно расписывались, скажем, вопросы допустимости дублирования кода, сайд-эффектов у функций и другие подобные темы, понимание которых действительно позволяет писать хороший код, мне что-то не встречалось…
No. 20743    
153842571182.png-(70.54KB, 1024×768, Clipboard01.png)
20743
>>20742
Я вообще больше подобных гайдов не видел, которые бы не кончались на “Code formatting”. Так что используешь то, что есть, даже невзирая на то, что здесь больше упирают на фишки языка (хотя большинство их присутствует и в современных). Но интернет — это помойка, здесь очень много мусора и мало чего ценного.

>сайд-эффектов у функций
У функций вообще не должно быть побочных эффектов. Просто в C сделали подпрограммы, которые могут возвращать значения — это технически просто и облегчало процесс преподавания студентам. Так далее и повелось — мы имеем процедуру Remove, производящую деструктивную модификацию контейнера, и функцию Find, которая только возвращает значение, и обе они называются функциями.
No. 20748    
>>20738
Океаны жёлчи в ответе твоём. Возьми это проще. Команды какие-то, "предпочтительней взять человека", серьёзный бизнес. Тот пост, на который ты отвечал, ни в коей мере не защищает вариант 2, который тебе не нравится.
No. 20749    
Почему в Перле
print unpack('H4', hex('1234'));
выдаёт 3436?
Что я делаю не так?
No. 20750    
153870961434.jpg-(84.38KB, 1280×720, Xj9V7PS_.jpg)
20750
>>20749
hex ()
зачем-то прибавляет тройку к старшей кварте каждого октета, т.е. твой код должен выдать
10#3436_3630#
при шаблоне
q(H*)
. Иными словами, тебе никто совместимости между внутренними и внешними форматами представления данных не обещал. Используй
pack ()
.

>>20748
Океаны желчи я в том посте поскипал. Проблемы?
No. 20751    
>>20750
А вот
print unpack('N', pack('b9', '001001001'));
ничего не выдаёт. Хотя тут распакованы упакованные данные. Что не так?
No. 20752    
>>20751
Размерность разная. Читай мануал по pack ().
No. 20753    
>>20752
Можешь на место ткнуть? Или оно не здесь?
https://perldoc.perl.org/functions/pack.html
No. 20754    
>>20753
N — 32 bit, ты только 16 передаёшь. Оно само остальные биты не допишет.
No. 20756    
>>20754
Я думал, что допишет, нулями забьёт.
No. 20757    
153873438766.jpg-(143.13KB, 600×600, 7c40e7e44fdd1064d35d2eb7f1d8c7fe1e4ffb19c6300ea65e.jpg)
20757
>>20756
Лучше бы ты чем-нибудь полезным занялся, дитя, чем теребить биты у старой рабочей лошади cgi-bin; интерпретатор там какого-нибудь паскаля написал, например. А то геронтрофилия какая-то получается; станешь как тот поехавший араб из comp.lang.ada.
No. 20758    
>>20757
Вы что имеете в виду, дядь?
Мне для линукса нужен перл, а с питоном я работал, больше не хочу.
No. 20759    
153874222961.jpg-(188.56KB, 902×1059, 2c6d760c6df49819ebd92f73e3104a72c10a188fe4fa40c55d.jpg)
20759
>>20758
Имею в виду, что студент выбрал тупиковое направление, потому что:
1) эти фичи в Perl-е были запилены для C-шников, т.е. людей, хорошо знающих работу ОС на низком уровне и отлично представляющих работу (сейчас уже устаревшего) железа и проблемы, которое оно с собой несёт;
2) nowadays Perl stays for legacy cgi-bin systems и скоро околеет, ботать особенности его работы с низкоуровневыми системными вызовами и машинозависимыми типами бесперспективно.
>Мне для линукса нужен перл
Судя по вашим вопросам, он вам не нужен от слова «совсем».
No. 20760    
>>20759
>Судя по вашим вопросам, он вам не нужен от слова «совсем».
Я вместо баш-скриптов использую. Я и не о них спрашивал.
Дядь, я хочу написать парсилку гифок, которая выдавала бы полный алфавит файла.
Так как в гифках на каждый символ обычно некруглое число бит, да ещё они и расположены наоборот, а в перле есть pack, который умеет и то, и другое - почему бы его и не использовать? За тем я вас и спрашиваю.
No. 20763    
>>20749
Аргуметом unpack должна быть строка, поэтому hex('1234'), то есть десятичное значение 0x1234 = 4660, интерпретируется как строка "4660", то есть "\x34\x36\x36\x30" в кодировке ASCII. После этого unpack 'H4' вернёт первые четыре шестнадцатеричные цифры из этого упакованного значения, то есть 3436.
>>20756
В конце описания функции unpack сказано, что если для формата требуется больше бит, чем остаётся во входной строке, то результат не определён.
No. 20765    
>>20759
> ботать особенности его работы с низкоуровневыми системными вызовами и машинозависимыми типами бесперспективно
Во-первых, он не спрашивал ни о каких машинозависимых типах, у него вполне переносимый 32-битный беззнаковый big-endian целочисленный тип. Во-вторых, в Ruby эти особенности практически такие же, как в Perl, то есть эти знания применимы и при использовании отличных от Perl языков программирования.
No. 20766    
15387493358.jpg-(53.69KB, 636×356, [SIG56de28aa51ea27296f34007f5049a57aa0006475e1aa61.jpg)
20766
>>20760
Тогда могу лишь пожелать удачи в ботаньи системного программирования под UNIX. Она тебе потребуется.

>>20765
>Ruby
Это умертвие в отличии от Perl-а и не жило толком. Легаси на нём опять же web-only, это Рельсы. Там системщины ещё меньше, чем в перле.
No. 20767    
>>20766
> Легаси на нём опять же web-only
А как же Metasploit, например?
Только ALGOL 68 по-настоящему мёртв. В Python в модуле struct методы pack/unpack тоже не так уж сильно отличаются от этих функций в Perl и Ruby.
No. 20769    
Бывают ли программы, которые "переводят" код с одного языка на другой?
No. 20770    
>>20769
Транспилеры, сэр.
No. 20777    
Анончег, если с помощью python paramiko скачиваю файл с sftp сервера, методом get, он меняет дату модификации у файла назначения в локальном пути? Возможности проверить сейчас нет, а ответ важен для понимания.
No. 20778    
>>20777
Датой модификации будет текущая локальная дата.
No. 20779    
>>20778
Спасибо, теперь все стало понятно.
Получается из стандартной библиотеки функции os.rename, os.getmtime, shutil.copy2, они каким-то чудом сохраняют время модификации файла.
А paramiko get наоборот меняет на текущую дату. Моя ошибка была в том что я думал что он работает как из стандартной библиотеки.
No. 20780    
>>20779
Можешь сам устанавливать полученную с сервера дату модификации файла после скачивания или воспользоваться модулем scp, который использует paramiko и в котором есть возможность указать аргументом методу скачивания необходимость сохранять серверную дату.
No. 20781    
153919250987.jpg-(42.97KB, 600×336, Карыч.jpg)
20781
Здравствуйте, дорогіе анонимы! Собственно, меня къ вамъ привелъ интереснѣйшій вопросъ... Для чего нужна "Ren'Py", если ​подобныя​ ​визуальныя​ новеллы я могу и въ "Delphi/Lazarus" сдѣлать? Даже на V.B.A. в "Excel", забавно.
No. 20786    
Вопрос по джваскрипту.
Насколько актуальны Server Side Events?
No. 20787    
>>20786

Настолько, насколько по адресу https://caniuse.com/#feat=eventsource сказано.

(Главная проблема: не поддерживаются во браузерах Корпорации Microsoft, требуют в них подпорки-костыля https://github.com/Yaffle/EventSource или аналогичного.)
No. 20788    
>>20787
О, Великий, какова же область применения серверных событий, ведь есть вебсокеты?
No. 20789    
>>20788

На сайте запрещённой в Российской Федерации¹ террористической² спецификации HTML5 по адресу https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events сказано, что серверные события генерируются обычным серверным скриптом поверх HTTP, и притом в одном направлении (от сервера во браузер), тогда как по адресу https://html.spec.whatwg.org/multipage/web-sockets.html#network сказано, что вебсокеты действуют поверх специального (по адресу https://tools.ietf.org/html/rfc6455 описанного) протокола, и притом в двух направлениях.

Соответственно, область для применения серверных событий возникает главным образом тогда, когда большой необходимости передачи сообщений в обратном направлении (из браузера на сервер) нѣтъ, а делать WS-сервер либо сложно, либо вообще нельзя (на виртуальном хостинге со строгими правилами, например).

____________

¹ Блокировку можно по адресу https://isitblockedinrussia.com/?host=html.spec.whatwg.org проверить. Лично мне для доступа к странице https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events потребовалось запустить TOR.

² Упомянутое по адресу https://isitblockedinrussia.com/?host=html.spec.whatwg.org решение 27-31-2018/Ид2971-18, принятое 2018-04-16 Генпрокуратурою — это, по-видимому, часть борьбы с мессенджером Telegram, «которым пользуются террористы», как известно.
No. 20790    
153921761986.jpg-(65.69KB, 603×602, 14454326388420.jpg)
20790
>>20789
Чрезвычайно доходчиво, вот тебе дева с котом.
No. 20796    
Можно ещё один вопрос?
Почему вот так

newXHR.open('GET', 'something.json');

всё работает, а вот так вот

fetch('something.json', {method: 'GET'})

нет? Я что-то не понял в синтаксисе фетча, но что?
No. 20797    
>>20796
Что значит не работает? Не отправляет реквест? fetch возвращает промис.
No. 20798    
153937518721.jpg-(19.58KB, 430×304, 1286342971381.jpg)
20798
>>20797
Я немного херню написали доволен был, а сейчас понял, что всё хуже и непонятней, чем я думал.
Так вот. Ситуация. Я поднял сервер на своём компевсё по гайду, чтобы чуть-чуть попрактиковаться в запросах. Код сервера - не мой, что там происходит я представляю слабо. Я шлю туда GET-запросы(и xhr'ом, и фетчем) и хочу получить json. И, к примеру, лисьи(собственно лиса лохматой версии и луна свежей) браузеры просто берут и грузят фал напрямую, минуя серверна сервере стоит специальная задержка перед ответом. А хромовые - просто отклоняют запрос, потому что он кросс-ориджиновый. И я не знаю, что делать, чтобы работало.
No. 20803    
153945012991.jpg-(20.72KB, 441×440, 263623114_2.jpg)
20803
>>20798
Всё оказалось просто, надо было нормально заходить через ip/порт/юри, а непросто вбивать путь к файлу.
No. 20824    
читаю "clr via c#" Рихтера и у меня есть вопрос по перегрузке операторов.
вот он пишет, что не все .net-совместимые языки программирования поддерживают синтаксис перегрузки операторов. пишет, что microsoft рекомендует вместе с перегруженными операторами создавать методы с "дружественными именами", вызывающие "методы перегруженных операторов", типа вот так пример из самой книги:
public sealed class Complex {
 public static Complex operator+(Complex c1, Complex c2) { ... }
 public static Complex Add(Complex c1, Complex c2) { return(c1 + c2); }
}

меня смущает return(c1 + c2);
если язык не поддерживает синтаксис перегруженных операторов, то как он сможет выполнить операцию c1 + c2? или я что-то не так понял? просветите меня
No. 20827    
>>20824
> как он сможет выполнить операцию c1 + c2?
Язык не выполняет операции. Компилятор языка транслирует текст программы в байт-код, который потом, когда пользователь запустит программу, исполняет среда выполнения CLR (Common Language Runtime). Обрати внимание на слово "common" — оно значит, что среда выполнения у всех .NET-языков общая. Класс Complex компилируется компилятором C#, он понимает перегруженный оператор +. Вызывающий метод Add этого класса код, написанный на другом языке, просто передаёт управление на откомпилированный компилятором C# код метода Add.
No. 20828    
>>20827
спасибочки что объяснил!
до меня это дошло вчера ночью, когда уснуть не мог, ха-ха
No. 20829    
Чио-чан, чем поля отличаются от свойств с геттерами и сеттерами по умолчанию в C#? Разве есть разница в использовании?
No. 20830    
Сколько нужно лет чтобы с нуля изучить HTML?
No. 20831    
>>20830
Мне кажется, что ты всё же хочешь изучить не только HTML, но хотя бы связку HTML+CSS, а к ней еще и Javascript, в контексте какого-либо популярного фронтенд фреймворка. Т.е. вещи необходимые и используемые сейчас для создания интерфейса современных веб и околовеб приложений.

Это всё из категории easy to learn, difficult to master. Ты быстро поймешь, как вещи делаются в принципе, но может уйти много времени на то чтобы понять как делать вещи конкретно тебе необходимые. На то чтобы понять как вещи делать в принципе, и начать их делать, никакие годы не нужны, базовый навык ты приобретешь буквально за пару месяцев. На то чтобы научиться с наскоку делать вещи конкретно необходимые, и делать их оптимально, уходит столько времени, сколько ты будешь готов на это потратить. Это уже чисто профессиональный опыт.

В контексте изучения конкретно верстки может пригодится вот эта запись из нашей базы знаний:
>>Хочу верстать
http://410chan.org/dev/arch/res/15681.html#17404
>>Пополняемая база знаний
https://pastebin.com/AGhLZppH
No. 20832    
15398098946.jpg-(789.54KB, 827×1169, __welrod_mk2_girls_frontline_drawn_by_fu_ta__7b0fc.jpg)
20832
>>20829
> Чио-чан, чем поля отличаются от свойств с геттерами и сеттерами по умолчанию в C#? Разве есть разница в использовании?

Окей. Начнём с того, что MS в оформлении кода рекомендует всё публичное делать свойствами, а приватное — полями. И все проекты соблюдают такой подход.

// По сути, здесь разницы никакой нет: 
    public int Age {get; set;}
    private int _age;

А ещё благодаря свойствам можно творить всякую полезную хуйню.

Типа управления доступом:

    public int Age 
    {
        get; 
        private set; //присвоить можно будет только внутри этого класса
    }


Типа инкапсуляции:

    public int Age 
    {
        get { return CalcAge(); }
        set { ReInitializeNpc(value); }
    }


Типа ебли с MVVM:

    private int _age;
    public int Age 
    {
        get { return _age; }
        set 
        {
            _age = value;
            
            //Уведомить, что изменилось свойство Age
            OnPropertyChanged("Age");
        }
    }

No. 20833    
>>20830

Недели вполне достаточно, если каждый день учить по одной седьмой и затем ещё практиковаться в применении изученного.
No. 20834    
153983130974.jpg-(69.33KB, 640×480, Руку к пустой голове не при?.jpg)
20834
Утро идиотских вопросов розовой дуры.

А кто-нибудь здесь делал самописный symbol-driven лексер? У меня есть два варианта архитектуры, но они оба какие-то корявые.
No. 20835    
>>20832
Т.е. публичные свойства с геттерами и сеттерами по умолчанию от публичных полей ничем не отличаются, и использование публичных свойств вместо полей - только соглашение о стиле кода?
No. 20836    
>>20835
> Т.е. публичные свойства с геттерами и сеттерами по умолчанию от публичных полей ничем не отличаются, и использование публичных свойств вместо полей - только соглашение о стиле кода?
Всё так. В базовом варианте они одинаковые.

Ну, насколько помню, то ещё "изкоробочная" сериализации/десериализации поля проебёт.
И рефлексия обосрётся.
No. 20837    
153987223549.png-(36.22KB, 526×395, screenshot.png)
20837
Ко мнению >>20833 прибавлю, что по адресу https://css-tricks.com/?p=277556 общее число тегов HTML5 считается равным 124, так что в неделю достаточно овладевать восемнадцатью новыми каждый день.
No. 20838    
>>20837
HTML лучше изучать вместе с CSS
No. 20839    
>>20837
Ага, потом ещё недели две учить атрибуты и свойства, а так же как их применять.
No. 20840    
>>20839
Хотя вру, я основы хтмл и цсс за три недели в общем освоил.
No. 20841    
>>20831
> для создания интерфейса современных веб и околовеб приложений
Вполне возможно, что задающий подобной вопрос хочет создавать не веб-приложения, а сайты. Веб в первую очередь для гипертекстовых документов, а не для программ.
No. 20842    
153998927185.jpg-(273.56KB, 1024×768, 461148019.jpg)
20842
>>20834
Поясню, что symbol-driven означает, что лексер представляет собой НДКА, состояние которого изменяет только приход нового символа, и весь экшн происходит только при переходе в новое состояние.

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

Первый вариант был проще в реализации и отлично расширялся, но оказалось, что в эваляторе надо делать фабрику методов, а лексер определителей может работать только с qr/([A]+)(?=[^A])/, где A — его алфавит, — и разбор потока qr/[A]+/ происходит в эваляторе, т.е. этот лексер не способен оперативно выдать лексическую ошибку на составных определителях, поскольку его сканнер о них ничего не знает.

По размышлению было решено остановится на варианте с менеджером узкоспециализированных лексеров, взаимодействующих с менеджером посредством унифицированного протокола, таким образом алгоритмы сканирования, эваляции и токенизации инкапсулируются в объекте лексера; в обязанности менеджера входит опрос лексеров, закрепление лексера, принявшего символ, за работой над потоком, пока лексер может с ним работать, и предоставление хранилищ данных. Этот вариант сложнее как в реализации, так и в задаче расширения, однако составные определители разбирает на лету.
No. 20843    
154004284146.jpg-(71.61KB, 400×533, A10497294-2.jpg)
20843
>>20842
Теперь осталось решить проблему, что лексема класса Literal не может завершаться другой лексемой этого класса, т.е. в случаях вида i:=2.3sin(0.3); лексер должен останавливаться на букве s с ошибкой. Опять же, есть два решения — такие случаи обрабатывает менеджер (т.е. нужна отдельная ветвь в его таблице переходов или трёхмерная таблица), или создаётся прокси-лексер LiteralLexer, который объединяет все лексеры класса Literal — identifier, numeric, string, character, — но тогда непонятно, как определять ошибку, ибо менеджер, не найдя более ни одного лексера, согласного принять символ, породит ошибку «неизвестный символ». ... Хотя, если все лексеры для менеджера изображают эту qr/([A]+)(?=[^A])/ регулярку, и менеджер даст (что заведомо абсурдно с его точки зрения) символ лексеру, завершившему работу, a лексер его примет, это и будет ошибкой «недопустимый символ».

Вообще, синтаксический анализатор писать гораздо проще, бо задача, хорошо определённая математически.
No. 20848    
>>20430
Кто-нибудь может подсказать самый годный свободный/открытый инструмент по собственному опыту для работы с ASN.1 , чтоб учиться и работать с ним?
No. 20850    
>>20848
Из того, что я нагуглил, ASN.1 — это очень мудрёный стандарт, основной целью которого является, очевидно, экономия байтов при передаче данных по сети. Инфы по нему примерно столько же, сколько по COBOL-у, бесплатные компиляторы несовместимы полностью со стандартом, за нормальные и полностью совместимые надо платить деньги. На Хабре есть цикл статей для нубов: https://habr.com/post/150757/ и ещё пять-десять статей по прикладному разбору сертификатов. Иными словами, не похоже, что тебе вообще есть из чего выбирать.
No. 20852    
>>20850
Зачем делать компиляторы платными? Маркетологи хотят продать стандарт ещё и программистам?
No. 20853    
Тут пишут что
https://www.amazon.com/ASN-1-Tutorial-Reference-Douglas-Steedman/dp/1871802067/
>Best introduction to ASN.1 I've found
No. 20854    
>>20852
Компилятор — это, внезапно, инструмент разработки и сложный программный продукт, разработчики которого банально хотят кушать. А так, спеки открыты и написать свой собственный вам никто запретить не может.
No. 20855    
>>20854
>бесплатные компиляторы несовместимы полностью со стандартом
No. 20856    
>>20855
Ну, во-первых, мопед не мой, а дядек с Хабра. А во-вторых, что вас так удивляет? Большой стандарт вполне может быть реализован частично.
No. 20859    
существует ли сайт, который открывает другой сайт, но при этом удаляя всю рекламу из нее?
типа, вводишь sitename.com/open?href=google.com и сайт гугла открывается например, во фрейме, но уже без рекламы
No. 20860    
>>20859
просто когда играю в игрули на 3дсочке, где-то застреваю, открываю браузер и захожу на геймфаг посмотреть решение - сайт не может загрузиться полностью из-за количества рекламы и отображается только малая его часть
No. 20861    
>>20859
Чем монетизировать предлагается?
No. 20862    
>>20860
Поставь на то устройство, с которого раздаётся Wi-Fi, блокировщик рекламы в виде HTTP-прокси с чёрным списком доменов или в виде скрипта для блокирования на уровне DNS-запросов.
No. 20864    
>>20862
звучит сложно. в панели управления роутером нету какой-либо функции блокировки сайтов, а накатывать кастомную прошивку не хочется, т.к. роутер не мой, вотъ

ну и было бы удобнее иметь возможность где угодно смотреть сайты без рекламы. еще нашел пример сайта https://www.printwhatyoulike.com/ сам он не подходит, так как не нажимается кнопка "я не робот"

я мечтаю, чтобы можно было на него заходить как на гугл.ком, смотреть что нужно - и все без рекламы может самому попробовать сделать...
No. 20865    
>>20863
Популярность сайта (а я уверен, что таким сайтом захотят воспольщоваться многие) приведёт к тому, что за хостинг придётся платить в районе 500 долларов.
Где найти эти 500 долларов, неизвестно.
Можно ещё применять белые списки, например, для постоянных пользователей чиочана.
No. 20866    
>>20865
ну, можно рекламы немного вставить на этот сайт-посредник, лол. например, на главной странице и показывать рекламу 5 секунд перед открытием желаемого сайта без рекламы
No. 20867    
15404321845.jpg-(145.98KB, 1061×1200, 1013383411.jpg)
20867
Привет, Стив. Тут одной обезьянке сервер приложений, для вообще. Она в Гугл, а там и плавающие, и летающие. Какой лучше обезьянке?
No. 20868    
>>20860
Если у сайта есть версия для мобильных устройств, то возможно, что она сможет открыться.
No. 20869    
154049793160.png-(64.56KB, 1522×828, pic.png)
20869
>>19666
Есть одна научная работа по генерации карт текстур с помощью нейронных сетей.
https://www.youtube.com/watch?v=UkWnExEFADI
Я скачал код на пайтоне.
https://repo-sam.inria.fr/fungraph/deep-materials/
Но не смог запустить,так как не понял как настраивать параметры и указать правильно путь.
Помогите, умоляю.
No. 20870    
>>20869
Тебе же даже пример строки показали.
No. 20871    
>>20869
>Но не смог запустить, так как не понял как настраивать параметры и указать правильно путь.

Подскажи пожалуйста:
1. Что ты вводишь, когда пытаешься запустить эту штуку. Т.е. скопируй сюда свою строку запуска.
2. Что тебе в ответ на твою строку запуска выводит в консоль.

Есть две основных возможных причины, почему у тебя не получается. Первая - ты действительно что-то не так настроил, или что-то не так делаешь. Вторая - инструментарий которым ты хочешь воспользоваться не то что бы рассчитан из коробки запускаться под Windows (судя по всему, ты запускаешь из-под неё). Ответы на эти 2 вопроса дадут возможность понять, в какую сторону тебе помогать.
No. 20872    
>>20867
>сервер приложений, для вообще
Поскольку ты еще не имеешь конкретных требований к своему серверу, рекомендовал бы рассмотреть сначала бесплатные опции, приведенные вот в этом посте из нашей базы знаний:
http://410chan.org/dev/arch/res/14160.html#14720

Базово, все эти варианты дают тебе машину с удаленным доступом к ней, и предустановленной ОС на выбор. Мне кажется, это лучший вариант, если тебе нужен сервер для своих кастомных приложений. Потыкав бесплатное, ты уже сможешь понять, подходит тебе конкретный вариант, или нет, и в какую сторону наращивать ресурсы своего VPS.
No. 20873    
>>20842
>Были два варианта: с разбивкой на подсистемы сканнера и евалятора, и с разбивкой на менеджера лексеров и лексеров с узкой специализацией.

>с разбивкой на менеджера лексеров и лексеров с узкой специализацией

>Теперь осталось решить проблему, что лексема класса Literal не может завершаться другой лексемой этого класса, т.е. в случаях вида i:=2.3sin(0.3); лексер должен останавливаться на букве s с ошибкой.

Мне кажется, здесь тебе для корректно обработки ошибок нужно завести еще несколько менеджеров лексеров. По хорошему, синтаксическая ошибка в
>2.3sin(0.3);
заключается в отсутствии токена операции между 2.3 и sin()

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

>i:=2.3sin(0.3);
Здесь у тебя должно получиться так.

1. Супер менеджер взял менеджер лекс-идентификаторов и скармливает ему строку пока не получится первый токен.
2. Один из лексеров менеджера идентификаторов сожрал i и породил токен идентификатора.
3. Супер менеджер взял менеджер лекс-операций и скармливает ему оставшуюся строку пока не получится токен операции. Если токен операции не получится, выплёвывается ошибка, что ожидалась операция на таком-то символе. В данном случае всё будет хорошо, и у тебя вернется токен операции :=
4. Получив токен операции, супер менеджер опять ищет токен идентификатора, и находит 2.3, как самый длинный из возможных.
5. Супер менеджер опять переключается на поиск оператора, и не находит его. Выплёвывается ошибка.

В целом, такая вот передача управления происходит пока супер менеджер не увидит, что оставшая строка - конец ввода ;

Здесь главным будет определить порядок работы менеджеров и процесс передачи управления между ними. Возможно, такая схема будет слишком сложной для того что ты хочешь.
No. 20874    
154058395260.jpg-(220.11KB, 1104×1200, 10208499871.jpg)
20874
>>20872
Спасибо, но хостинг обезьянке пока не нужен. Обезьянка хотела узнать, что выбрать — http://wildfly.org/about/ или https://www.payara.fish/software/payara-server/ ?

На форуме разработчиков JBoss сказано, что
>memory requirements of WildFly itself are low, it uses less than 20mb of ram on default (empty) standalone config.

Даташит на лучепёрую рыбу семейства цинодонтовых говорит, что надо минимум 512 MB и определённую операционную систему, к тому же хвастается вещами, обезьянке сейчас совсем ненужными.
No. 20876    
>>20874
Если тебе пока нужен простой контейнер для Java-приложух, что-нибудь совсем легковесное типа jetty не подойдет?
https://www.eclipse.org/jetty/
No. 20877    
154059582723.png-(194.52KB, 1355×935, Tokenizer.png)
20877
Как-то так вышло. Чур не ржать громко!

>>20873
Тут есть один нюанс: лексер сам по себе ничего не знает о синтаксисе — это задача парсера a.k.a. синтаксического анализатора, работающего уже с хорошо определёнными токенами. Задача лексера — разобрать входной поток символов на лексемы (стадия сканирования) и преобразовать их в токены (стадия эваляции). Для литералов в ЯП вводится требование, что между соседними литералами должна быть хотя бы одна лексема классов delimiter (определитель?) или separator. Т.е. в случае i:=2.3sin(0.3); это лексическая ошибка записи числового литерала (который, кстати, может иметь вид 12.999e-10), а в случае i:=2.3 sin(0.3); — это синтаксическая ошибка «пропущенный оператор». Тут можно вспомнить, что символ '.' также является определителем метода для экземпляра класса, т.е. случай i:=2.3+sin0.3; абсолютно корректен лексически, но ошибочен синтаксически — числовой литерал не может быть идентификатором метода.

Далее, все, известные мне, лексеры работают либо с файлом, либо с достаточно толстым буффером, и могут по необходимости заглядывать вперёд, т.е. являются self-driven лексерами с backtracking-ом. Здесь же вперёд заглянуть нельзя, таким образом процесс эваляции у всех литералов и разделителей на самом деле лексер разделителей никаких токенов не порождает начинается при приходе символа не из их алфавита, т.е. в случае i:=2.3sin(0.3); токен (identifier, "i") не создастся, пока не придёт следующий символ ':'; лексер идентификаторов вернёт тогда Match_Success и из цикла поиска выпадет. Вот лексер определителей из этой схемы выбился, поскольку определители никак не разделяются и вообще это Exact Match согласно перловому компилятору регулярок.

Вот и пришлось работу с буффером и коробкой готовой продукции делегировать исполнителям, а исполнителей разделить на группы. Таким образом, лексер определителей здесь единственный, кто в дополнение создаёт токены и возвращает In_Progress.
No. 20878    
>>20876
Тут вопрос - а что он из этого вынесет?
No. 20880    
>>20874
Ну не знаю. Мне WildFly понравился. А так, разницы между ними особой нет: https://habr.com/company/otus/blog/344416/

>>20876
Jetty — это контейнер, который как службу не запустишь и мышкой не настроишь. Ну и поддержки JEE можно сказать, что и нет. Значит много вынести от его использования не получится, если, конечно, цель состоит именно в этом.

>>20877
>Tokenizer.java
>строка 55
>менеджер даст (что заведомо абсурдно с его точки зрения) символ лексеру, завершившему работу, a лексер его примет, это и будет ошибкой «недопустимый символ»
Столько про этот кейс говорила, а обработать его забыла. Ну дура же!

Вообще, сейчас уже надо начинать писать юнит-тесты, поскольку отлаживать автоматы автоматов в голове становится всё сложнее. Однако оказалось, что JUnit в виде plain-old-jar больше не поставляется, поэтому надо ставить Maven и переводить проект на него, а уже в настройках проекта указывать зависимость JUnit, чтобы Maven подсосал нужные библиотеки из сети. Надо было сразу это сделать~
No. 20882    
154104702987.png-(220.95KB, 1400×936, Mission_Profile_Tests.png)
20882
>>20880
Когда всё начинает работать с первого раза, становится как-то неинтересно. Теперь надо строить синтаксическое дерево, попутно разбираясь, как устроены известные интерпретаторы в смысле среды исполнения.

Лексер, как можно заметить, работает с лагом в один символ (т.е. look-ahead) для унификации способа работы с отдельными модулями. Парсер так же необходимо сделать look-ahead для удобства разбора приоритетов операторов.
Классификация токенов редуцирована по сравнению, например, с компилятором C, и аналогична таковой для лексического анализатора компилятора Clang. Это позволило убрать зависимость лексера от парсера, т.е. повысить инкапсуляцию алгоритмов и модульность проекта. Задача дальнейшей классификации таких токенов целиком возлагается на синтаксический анализатор. Вообще, как-то не особо понятно, почему классификацией идентификаторов должен заниматься именно лексер, но так сложилось исторически.

Нашел, кстати, неплохой гайд по созданию собственных интерпретаторов: http://craftinginterpreters.com/ Тут предлагают процесс интерпретации сделать через обход дерева с использованием паттерна «Посетитель» или преобразовать дерево в байт-код и сделать виртуальную машину. В принципе, первое проще, но второе лучше разделяется, значит удобнее в разработке, отладке, поддержке и расширении.
No. 20892    
>>20882
пишешь свой яп?
No. 20894    
>>20892
Небольшой интерпретатор в автоматном стиле скорее. Довольно занимательная инженерная задача.

А так, никто по сей день так и не смог сделать ЯП превосходящий Ada 95 (типы и подтипы, определяемые пользователем, иерархии модулей, ADO, GADO, ADT, GADT, метапрограммирование на женериках) и Ada 2005 (интерфейсы, сахарок вида object.method и указание процедур-параметров в женериках с null по умолчанию), так что смысла изобретать велосипед я не вижу.
No. 20901    
154179231667.gif-(110.20KB, 400×433, 002c809093dc00a4829d04740d53fc976cd50e8c.gif)
20901
Чиотян, помоги дуре!

https://stackoverflow.com/questions/17581310/using-enum-for-factory-in-java-a-best-practice/ — какая фабрика лучше, которая с абстрактными методами, которая со ссылками на конструкторы, или которая с классами? Дуре фабрика с классами — просто новые классы добавлять и к 8-й версии не прибита, а тебе?
No. 20902    
>>20901
Я тоже голосую за обычную фабрику с классами: т.е сматчили енум (или что там тебе нужно), и по результатам создали экземпляр нужного класса. Универсально, всегда работает.

Альтернативный способ, если хочется чтобы было альтернативно - сделать мапу строка -> функция (возвращает общий интерфейс). Тело функции - создание экземпляра нужного класса. Тогда ничего самому матчить не надо, достал из мапы по ключу, и вызвал с аргументами (или без). Добавить что-то новое в такую мапу-фабрику тоже элементарно.
No. 20903    
154189101425.png-(71.52KB, 1279×855, Clipboard01.png)
20903
>>20882
Подвисла дура чего-то... Основная задача интерпретатора — это REPL, поэтому такие требования.

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

(Involved performers, Analysis result, Last involved performer)
( 1, In_Progress, Performer.Program)
> function f (x) is
( 2, Delegated,   Performer.Declaration)
( 3, Delegated,   Performer.Function_Declaration)  ->  (enter scope)↑
>> if x < 2 then
( 4, Delegated,   Performer.Statement)
( 5, Delegated,   Performer.If_Statement)          ->  (enter scope)↑
>>> return false;
( 6, Delegated,   Performer.Statement)
( 7, Delegated,   Performer.Return_Statement)
( 7, Finished,    Performer.Return_Statement)
( 6, Finished,    Performer.Statement)
( 5, In_Progress, Performer.If_Statement)
>> end if;
( 5, Finished,    Performer.If_Statement)          ->  (leave scope)↑
( 4, Finished,    Performer.Statement)
( 3, In_Progress, Performer.Function_Declaration)
>> end function;
( 3, Finished,    Performer.Function_Declaration)  ->  (leave scope)↑
( 2, Finished,    Performer.Declaration)           ->  (interpret current subtree)↑
( 1, In_Progress, Performer.Program)

(На самом деле цепочки делегирований более длинные, поскольку BNF этого недо-Паскаля занял пару страниц, ну и половина исполнителей не делает больше ровным счётом ничего, прямо как в жизни.)
По сути, это тот же рекурсивный спуск, только с постоянным состоянием на каждом этапе анализа, ну и один огромный token-driven автомат.

Не нравится, что исполнители вовлекают новых исполнителей самостоятельно, в результате управление слабо централизовано. Ну и поток управления у паровоза lexer->parser->binder->performer начал раздваиваться из-за введения областей видимости. Хотя видится вполне возможным обойтись деревьями утверждений, если всё-равно их потом сплющивать в байт-код.

>>20902
Классика со свичом мне не нравится, если ты про неё: во-первых, нет способа узнать, объекты какого класса создаёт элемент перечисления, во-вторых, элемент и класс создаваемого объекта никак явно не связаны, только через код свича. Ну а ссылки на подпрограммы завезли только в восьмую жабу это вам не Ada 95, где просто статический массив под это дело фигачился: type Constructor is access function return Your_Object'Class; Create : constant array (Your_Enum_Type) of Constructor := ....

Я про enum с классами говорил — способ хороший и наглядный. Но мне не нравится сам метод создания нового объекта и количество исключений, которые при этом кидают Class.getDeclaredConstructor () и Constructor.newInstance ().
Удалить сообщение []
Пароль  
[Mod]