Ычан: [d | b / bro / gf / hr / l / m / med / mi / mu / o / ph / r / s / sci / tran / tu / tv / x | es / vg | au / tr | a / aa / abe / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 21641)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, XCF, ZIP размером до 5000 кБ.
  • Ныне 3031 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
155344039867.png-(777.18KB, 720×720, junior_developer_kobayashi.png)
21641
No. 21641    
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

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

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

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

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

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

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

Если здесь поселится достаточное количество программистов на одном языке / одной сферы, можно будет их выделить в отдельную нить, а в этой оставить на неё ссылку.
По мере поступления вопросов можно составлять 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
http://410chan.org/dev/arch/res/19666.html

Прошлая нить пока тонет тут: >>/dev/19666
220 сообщений пропущено. Показаны 50 последних сообщений Развернуть все изображения
No. 22444    
>>22443
Вместо неё.
Хотя стоп, я тормоз. Передо мной борда, и она сделана вовсе не на таблицах, как я думал, а на дивах. А по внешнему виду ничем от табличной не отличается. Т.е. — именно с нужными мне свойствами. Вопрос снимается, лезу смотреть, как сделан класс postbody в местных стилях.
No. 22445    
>>22444
Upd: мда, а ларчик открывался просто:
display: table;
Не сказал бы я, чтобы это выглядело особо красивым решением, но по другому заставить дивы автоматически регулировать свой размер в зависимости от размера содержимого, видимо, нелья…
No. 22446    
>>22445
Upd 2: Нашел вот это: https://ru.stackoverflow.com/questions/22387/Ширина-div-по-контенту
Там приведен десяток разных вариантов решение задачи (и сам вопрос сформулирован куда более внятно), и у всех, чтоб их так, какие-нибудь левые сайд-эффекты.

На самом деле, правильное решение — это
width: fit-content;
Но с поддержкой у него…
No. 22447    
156494056844.png-(6.70KB, 616×655, Clipboard01.png)
22447
>>22445
flex-ом злой плантатор пользоваться запрещает или ты слишком крут для лёгких путей?

З.Ы.: У меня всегда обратная проблема была — как сделать так, чтобы <div> вёл себя как <table width="100%">. Потом я узнала, что добрые дяди сделали фреймворк, радикально решающий эти проблемы — <h:panelGrid> отлично работает практически на любом утюге.
No. 22448    
>>22434
Реализовать можно по разному, в зависимости от того что именно тебе надо и в каком виде (а заодно с какими фичами и т.п.), но хранить данные ты можешь просто в специальной таблице метадаты. У WordPress специально предусмотрены таблицы для этого, и логика готовая: можно считывать, записывать, удалять значения, использовать в запросах и сортировках и тому подобное.

Например, делаешь update_post_meta($post_id, ‘_post_views, $view_number); и оно сохранит все в БД. Надо будет вывести? get_post_meta, ну и так далее. По поводу нагрузки особо не волнуйся, если ты не собираешься на каждый чих делать по 50-100 запросов лишних, то это ни на что не повлияет, если ты конечно какой-то рак не напишешь. Так что лучше пиши сам, заодно дополнительный опыт тебе будет.

А вот готовые плагины как раз могут тебя легко подставить. Их часто пишут макаки совсем уж, из-за чего потом сайты могут тормозить.
No. 22449    
>>22440
А зачем тебе делать запрос на каждый отдельный пост, ещё и по разным колонка, когда можно вытащить всё и сразу за один?
No. 22450    
>>22448
Я этим опытом два дня мучаюсьза окном +35, кондей уже не спасает, пока что просто CREATE TABLE
my_own_meta
IF NOT EXIST и потом пишу туда. Ну... собираюсь писать, для начала нужно авторизацию как-то сделать.
С post_meta не ясно как хранить, например, конкретных пользователей, лайкнувших пост. По-моему без отдельной таблицы всё равно не обойтись.
>>22449
Ну да, количество лайков и просмотров можно хранить в одном месте и получать скопом, неудачный пример.
No. 22451    
>>22450
Кондиционеры рулят.

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

>С post_meta не ясно как хранить, например, конкретных пользователей, лайкнувших пост. По-моему без отдельной таблицы всё равно не обойтись.
Можно по разному сделать. В принципе, один пост может содержать множество записей в post meta с идентичным идентификатором, но разными значениями. Можно просто делать add_post_meta для пост, например с ключем user_liked и значением id юзера, который лайкнул. Просто у каждого поста будет целая простыня таких записей потенциально. А можно пойти наоборот. Работа с мета-данными предусмотрена не только для постов, но и для юзеров, соответственно add_user_meta / get_user_meta, где вместо id поста вначале надо будет передать id юзера, потом ключ и уже потом значения. Соответственно можно записывать для каждого юзера какие именно посты он лайкал. Можно вообще упороться и хранить это не отдельными записями, а массивами, если ты хочешь экономить количества записей. Например, сохранять массив у пользователя в мета-данных какие посты он лайкал.
No. 22455    
Имеем меню на css вида a:focus ~ ul. Т.е. при кликe по ссылке онa ловит фокус и список становится видимым.

Вопрос: можно ли без привлечения js, на чистом css, сделать так, чтобы по следующему клику на ту же ссылку эта менюшка закрывалась обратно?
No. 22456    
>>22455
Да, при клике за пределы менюшки оно тоже должно закрываться, т.е. вариант с использованием checked (если я правильно понимаю, как он работает) скорее всего не катит.
No. 22457    
156505832065.png-(259.28KB, 1365×824, Clipboard01.png)
22457
>>22439
Никто не забыт, ничто не забыто.
Вроде получилось достаточно универсально. По крайней мере я никаких недочётов не вижу.

>>22456
Фокус либо на ссылке, либо на элементах меню, иначе скрываешь.
No. 22458    
>>22457
>Фокус либо на ссылке, либо на элементах меню
И как это поможет закрыть при втором клике на ссылку?
У меня сейчас — фокус на ссылке либо ховер на списке, что примерно то же самое.
No. 22459    
>>22458
Никак, лол. Тогда не знаю.
No. 22461    
>>22455
Тебе верно сказали, что фокус здесь не совсем катит. Тебе нужен элемент с переключаемым статусом, т.е. чэкбокс, а "ссылку" можешь сделать просто лейблом для своего чэкбокса.
No. 22463    
>>22455
Теоретически, можно добавить к :focus селектору прозрачный псевдо-элемент, через ::before() или ::after который будет перекрывать собой ссылку, и по фокусу или клику на который меню автоматом закроется (т.к. фокус ускачет со ссылки и :focus селектор перестанет работать). Но тут надо эксперементировать, если что, заливай своё меню на jsfiddle.
No. 22465    
156509902686.png-(199.02KB, 622×920, 2016-11-22-873326.png)
22465
>>22457
>никаких недочётов не вижу
Надо карту в синглтон засунуть, вот чего. В будущем может понадобиться слать сообщения из других контейнеров.

>>22461
Извратский способ, конечно: делаешь полностью прозрачный чекбокс, под ним размещаешь текст лейбла. Только у него тогда вторая хотелка работать не будет. Можно ещё покопать в сторону CSS-переменных, но к ним нет условных операторов и я не видела, чтобы их можно было мутировать, так что вряд ли.
No. 22466    
>>22455
https://css-tricks.com/solved-with-css-dropdown-menus/ — во чего нашла. Оно?
No. 22467    
>>22455
Не слушай этих выше, просто поставь :focus{pointer-events:none}.
No. 22468    
>>22461
Выше уже написано, почему оно не подходит. Тот функционал, который уже работает — более приоритетен, чем это, а извраты с чекбоксами его сломают.

>>22463
Хм. Спасибо за идею, надо будет попробовать.

>>22466
Ну, по крайней мере на первый взгляд я там ничего похожего не вижу. Хотя, конечно, почитаю, так что спасибо.
No. 22469    
>>22467
О, а вот это работает!
Спасибо огромное!
Про это свойство я не знал… И вообще на MDN про него написано, что оно только svg. Но и в лисе и в хроме — всё пашет в обычном html.

Задача решена.
No. 22480    
156536871969.jpg-(89.52KB, 1200×852, D0PNnDzVsAAlp4E_jpg_large.jpg)
22480
Как правильно разделять логику модели и логику контроллера?
Вот, допустим, у меня есть регистрация на фласке.
Пользователь отправляет данные в виде юзернейма, email и пароля. Я минимум должен проверить что эти поля не пустые иначе вернуть ошибку. Это я должен проверять в контроллере, верно? После мне нужно проверить, что юзернейм не используется и почта не занята. Это я проверяю делая запросы в базу из того же контроллера. После, если всё хорошо, создаю нового пользователя. Или лучше сделать отдельный метод модели create_user и передавать туда данные на проверку? По интернетам пишут что кому как удобнее. Кто-то делает толстые контроллеры, кто-то всю логику суёт в базу, а в контроллерах только http-запросы обрабатывает. Как правильнее?
No. 22481    
156538215390.jpg-(205.04KB, 1448×2048, 2019-02-24-984438.jpg)
22481
>>22480
В общем случае твоя модель должна делать бизнес-логику вне зависимости от выбранного способа клиент-серверного взаимодействия.

Возьми свой аккаунт-сервис и представь, что завтра захотят добавить к нему веб-сервис, т.е. JAX-WS; после завтра захотят RESTfull API для SPA фронтенда, т.е. JAX-RS; после после завтра засунут в кластер и захотят инжектить в другие бины как JNDI-ресурс.

Та, общая для всех способов, функциональность, которую в итоге ты вынесешь в EJB-сервисный слой, и будет моделью; остальное — контроллерами. То же справедливо и для десктопных приложений; так же и для SPA.

>Пользователь отправляет данные в виде юзернейма, email и пароля. Я минимум должен проверить что эти поля не пустые иначе вернуть ошибку. Это я должен проверять в контроллере, верно?
Да, это валидация веб-формы, специфического способа клиент-серверного взаимодействия.
>После мне нужно проверить, что юзернейм не используется и почта не занята.
Это условия создания нового аккаунта, т.е. бизнес-логика данного приложения. Значит она уедет в сервисный слой. Обычно в случае нарушения условий из сервисного слоя кидают кастомные checked-exception-ы, которые затем обрабатываются в контроллерах.

>По интернетам пишут что кому как удобнее.
Этого нельзя понять на практике если у тебя игрушечный стэк, который жестко фиксирован на каком-либо одном способе, и игрушечные задачи.
No. 22482    
Пишут, что надо поменьше обращаться к DOM.
Вот сделал я генератор таблицы: https://jsfiddle.net/hgvke6to/
Как лучше поменять код?
No. 22484    
156548216944.png-(133.07KB, 750×650, 2015-07-10-750332_low.png)
22484
>>22482
Проще всего будет закешировать узлы, всё-равно ты только текст в них меняешь: https://pastebin.com/mkGUNMiN
No. 22485    
>>22484
Спасибо, рассмотрю.
Тут возник другой вопрос: я пытаюсь сгенерировать SVG, но в браузерах не показывается ничего, от хромов до файрфоксов. При этом сам сгенерированный код нормально просматривается, например, в Inkscape.
https://jsfiddle.net/par36uwx/
No. 22486    
>>22485
В Presto, кстати, нормально отображается.
Btw... https://jsfiddle.net/Milfeulle/twzfnack/ Даже не спрашивай, почему так, — вряд ли я хочу это знать.
No. 22487    
>>22480

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

В целом >>22481 тебе примерно это и пишет. Но хочу отметить, что дублирования определенных моментов здесь не избежать. Например:

>Пользователь отправляет данные в виде юзернейма, email и пароля. Я минимум должен проверить что эти поля не пустые иначе вернуть ошибку.
>Это я должен проверять в контроллере, верно?

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

Да, это небольшое дублирование валидации данных между сервисом / моделью (бизнес-логикой) и контроллером (который внешний интерфейс к твоей бизнес-логике) Но в общем случае, ты как автор сервиса не можешь полагаться на то, что авторы всех интерфейсов к нему сделают всё правильно и не будут присылать тебе сломанные данные. Проверять, впрочем, надо только то, что проверять абсолютно необходимо, т.е. вещи по которым провести операцию нереально, или вещи, которые могут привести к сломанным данным в базе, или нарушить логику работы приложения на других этапах. Поэтому пустое поле ты будешь проверять и в контроллере, и в сервисе / модели, а вот сколько там заглавных букв и цифр ввели в пароль - только в контроллере, т.к. модели такие детали уже не важны.
No. 22488    
156564016745.jpg-(341.48KB, 700×990, 2017-11-11-933871.jpg)
22488
>>22487
>а вот сколько там заглавных букв и цифр ввели в пароль - только в контроллере, т.к. модели такие детали уже не важны.
Это же соглашения безопасности для данной информационной системы, ты чего, Стив? Контроллеры не могут устанавливать их произвольно.

@TL;DR
Ну а вообще, проектирование информационной системы начинается с создания концептуальной инфо-модели бизнеса — https://www.site-do.ru/db/db4.php , — из которой потом создаётся реляционная модель — https://www.site-do.ru/db/db5.php , — которая затем отображается на объектную (бизнес-данные, они же JPA @Entity обычно). Здесь закладываются требования к форматам данных и безопасности (т.е. пишется спецификация бизнес-данных), и пишутся валидаторы. То, что в спецификации бизнес-данных не описано — валидация DTO или иных промежуточных данных для пары View-Controller, пользовательского ввода и обработка чэлленджей (всякие там “Solve puzzle”, “Re-enter password”) — валидируется в контроллере.

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

Так что ответ на вопрос «Что где валидировать?» содержится в информационной модели бизнеса, а проблема дублирования валидаций по крайне мере для энтерпрайза глубоко вторична если о ней с BeanValidation API вообще кто-то задумывается, так же, как и с транзакциями в EJB — более важно обеспечить в проектируемой системе невозможность потери данных, перевода данных в неконсистентное состояние, обеспечить безопасность работы с данными и невозможность несанкционированной работы с ними.
No. 22489    
Автобусик, миленький, подскажи ресурсов для изучения языков! Поставил себе задачу последовательно выучить Python/Perl, PHP, JS, HTML, C, C++ и Java. Многовато, да. Но так как я планирую быть специалистом по информационной безопасности, без знаний этих языков мне некуда.
No. 22490    
>>22489
Чтобы быть специалистом, а не натасканной обезьяной-заучкой, нужно не языки, а более базовые вещи изучать — т.н. computer science, сети, архитектуры, алгоритмизацию и прочее. Языки лишь инструменты для записи и если знаешь основы — для их изучения будет достаточно почитать справочники и написать пару хелловорлдов.
No. 22491    
>>22489
>так как я планирую быть специалистом по информационной безопасности
Вот и иди учить инфосек.
No. 22492    
156572195480.png-(160.42KB, 555×900, 2016-05-09-831514.png)
22492
Рубрика «Сами спрашивали, сами отвечаем»: Хэширование паролей
Теория: https://www.codeproject.com/Articles/704865/Salted-Password-Hashing-Doing-it-Right
Практика: https://stackoverflow.com/a/2861125 https://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords
Нюансы: https://stackoverflow.com/questions/6947689/hinputsecret-security-is-there-a-way-to-use-a-straight-reference-to-char
No. 22493    
>>22490
Спасибо за советы! Но я всё же считаю, что эти языки я обязан знать также, как и т.н. базу (логику, теорию вероятности, computer science, сети и тд).
А мог бы ты посоветовать материалов по изучению computer science, сети, архитектуры, алгоритмизации и прочего?
No. 22494    
>>22493
>А мог бы ты посоветовать материалов по изучению computer science, сети, архитектуры, алгоритмизации и прочего?

Вот в этой коллекции
>>Нашли 13 Гб книг по IT-тематике
https://410chan.org/dev/arch/res/19666.html#20146

ftp://ftp.micronet-rostov.ru/linux-support/books/

Есть целая секция посвященная алгоритмам:
ftp://ftp.micronet-rostov.ru/linux-support/books/computer science
/data%20Structures%20&%20algorithms/

Если тебе хотелось бы что-то в формате курса, или интерактивных упражнений, можно посмотреть вот в эту сторону:

>>Я ищу базовые курсы по созданию ПО
https://410chan.org/dev/arch/res/19666.html#21223

>>Я ищу задачи и упражнения по алгоритмам (C, Python)
https://410chan.org/dev/arch/res/15681.html#17105
https://410chan.org/dev/arch/res/15681.html#17108
https://410chan.org/dev/arch/res/15681.html#17110
No. 22495    
156579620170.png-(49.27KB, 597×509, underscores.png)
22495
Наверное, глупый вопрос. Для обозначения чего обычно ставят префиксы из underscore'ов в cpp в имена? Скажем в исходниках STL? Этот ___x, __BasePtr и тому подобный сахар весьма тяжело читать. Хотя тут нужна привычка, должно быть.
No. 22496    
>>22493>>22494
Кстати о курсах. На Ютубе где-то был курс CS50.
No. 22497    
156580673734.jpg-(170.99KB, 719×1080, B0VtSwakpZc.jpg)
22497
О, вовремя я вспомнил о своём вопросе.

>>22481
Да, пожалуй ты прав. Перепишу как только так сразу
> игрушечные задачи
У меня лёгкая форма аутизма. Даже гвоздь стараюсь забить так, чтобы было правильно со всех сторон.

>>22487
> Сервис не сможет создать аккаунт на пустой юзернейм и / или имейл, а значит на такой ввод он сам тоже должен возвращать ошибку
На этот случай в SQLAlchemy есть встроенные валидаторы. Но если я это не обработаю в контроллере, то клиент получит 500 ошибку в лицо и никаких подробностей. А тут я её оберну в 400 ошибку и напишу где он не прав.

Спасибо, котятки.
No. 22498    
>>22495
Частные методы/аттрибуты обычнопишут с _
No. 22499    
Сап. Подскажите пожалуйста, почему я получаю в этом коде: <script src="https://ideone.com/e.js/O1MhAz"; type="text/javascript" ></script>
следующую ошибку: Uncaught SyntaxError: missing ) after argument list в 16 строке?
No. 22500    
156587092456.jpg-(17.01KB, 320×320, 45673984105_9764a69e3c_n.jpg)
22500
>>22499
Извиняюсь за поломанную разметку.
No. 22501    
>>22500
newString.lenght
Нужно - length
No. 22502    
>>22501
А здесь 16: letters.forEach((item, index, array) {
потерял =>. Раз уж ты пишешь на идеоне, то проверяй свой код там же.
No. 22503    
Вставлю свои 5 (пять) копеек.
>>22499
Object.keys — ты точно понимаешь, что оно делает?
for (i == 0;...

letters.forEach is not a function


newString[i] — а так можно разве?
No. 22504    
156598125130.webm-(1.81MB, 640×360, [a] AGDG Embassy S01-E15.webm)
22504
Как вкатиться в геймдев?
No. 22505    
Пишу контейнер (разновидность дерева) в C++. Объект дерева хранит обычный указатель на корневую иноду, а каждая инода хранит обычный указатель на, собственно, объект класса данных. Следует ли при удалении инод (а то и вызове деструктора всего дерева) сделать опцию также и для удаления объектов данных, на которые есть указатели в инодах? Или стоит оставить управление памятью объектов класса данных исключительно на совесть пользователя?

Использование описанной опции даст ошибку, если в дерево добавлен (добавление осуществляется по ссылке) элемент, являющийся локальной переменной или элементом массива, вектора или чего ещё. Обходом по дереву извне класса дерева нельзя уничтожать объекты класса данных, потому что они нужны для обхода дерева. Получать указатель на объект, удалять указатель на объект из дерева, и только затем удалять объект по сохранённому указателю, и так уничтожить все объекты данных по указателям в дереве — не то, чтобы медленно, но хочется-то O(n). Автоматическое управление памятью в виде shared_ptr ⇒ потенциальные +80MiB памяти (где-то 4% от скорее всего, но тем не менее) на большом количестве элементов и, что наиболее важно, ухудшение быстродействия, а также необходимость всегда использовать shared_ptr для добавления объектов класса данных в дерево и контроля их времени жизни. Стоит ли погружаться в пучину стандартов и реализаций STL для контейнеров? Как обычно реализуют управление памятью в контейнерах и коллекциях в С++?
No. 22506    
>>22505
>Обходом по дереву
Имеется ввиду обход в правильном порядке (от наименьшего по ключу к наибольшему) с использование итератора класса дерева. Итератор можно написать так, чтобы обход был за O(n) и в корректном порядке, но это не точно.
No. 22507    
156602036252.jpg-(261.84KB, 850×680, 2017-02-21-889758.jpg)
22507
>>22432
>1.
>>22457
>httpSession
Не нравится мне это решение — хранить ссылку на объект HttpSession в инстансе @ServerEndpoint. Похоже на какой-то хак, тем более, что на том же SO разработчик Jetty говорил, что такие объекты бесполезно мутировать. Да даже если и имеет смысл, то непонятно, к чему это приведёт при репликации/сохранении сессий.

>>22439
6. WebSocket контейнер — абсолютно автономный контейнер с ограниченной поддержкой CDI, но не суть. Даже если рукопожатие произошло в контексте JSF сервлета, получение JSF @SessionScoped бинов от последнего — задача нетривиальная, поскольку WebSocket контейнер работает в своём собственном контексте: https://stackoverflow.com/questions/36177742/how-to-propagate-cdi-session-beans-from-http-session-to-websocket-session Ещё более нетривиальной является задача передачи данных от @ServerEndpoint в JSF @SessionScoped бин.

7. EJB @ServerEndpoint. Нигде в спецификации не написано, что оно должно так быть, но так есть. https://abhirockzz.gitbooks.io/java-websocket-api-handbook/content/part-1-tying_in_with_the_java_ee_platform.html Для расшаривания данных можно заморочиться со @Stateful EJB: в отличие от CDI Managed Beans, они контекстно независимые. С другой стороны этот бин один хрен надо таскать по ссылке между контейнерами, так что он в данном случае от обычного POJO отличается лишь zero-cost сoncurency и необходимостью явного разрушения.

Можно было бы рассматривать WebSocket-ы как ещё один способ клиент-серверного взаимодействия — похоже, что JSR-356 дизайнили исходя из этого положения, — однако основной его фронт работы — это обеспечение полнодуплексного обмена данными на веб-страницах, — посему отсутствие интеграции с Servlet-контейнером довольно печально.

>>22495
Это соглашения именования (Naming Conventions), означать могут всё, что угодно — у каждого проекта они свои. Смотри в документации для разработчиков к конкретному проекту.

>>22505
Плюсы как-то мимо меня прошли...
Лучше всего было бы передавать в дженерик параметром настройки ссылку на метод деструктора с фоллбэком на NOP, как это сделано в коллекциях Ada 2005: кому надо, укажут, кому не надо — не укажут. Но это Ada, там с настраиваемыми абстракциями всё хорошо. Можно ли так делать в плюсах, мне неизвестно.
No. 22508    
>>22505
>Как обычно реализуют управление памятью в контейнерах и коллекциях в С++?
Запусти valgrind на тестовом векторе и посмотри.

А вообще,
>добавление осуществляется по ссылке
Это, блджад, контейнер, он должен инкапсулировать объект целиком и полностью, и добавлять копирующим конструктором. Если я вижу вектор интов, я ожидаю, что там инты, что на push() я создаю новый инт, что на clear() все инты убиваются в памяти сами. Иначе я бы сделал вектор указателей на инты, которыми бы управлял сам.
No. 22509    
156603755636.jpg-(121.50KB, 1810×344, by_ref.jpg)
22509
>>22508
Векторы, как я понимаю, в сущности класс-надстройка над низкоуровневым динамическим массивом. Это не совсем то. Пример более близких структур данных наподобие list, set и map был бы корректнее. К тому же, добавление в вектор всё равно осуществляется по ссылке. Хоть содержимое, на которое она указывает, и будет потом скопировано.

> Как обычно реализуют управление памятью в контейнерах и коллекциях в С++
> Это, блджад, контейнер, он должен инкапсулировать объект целиком и полностью, и добавлять копирующим конструктором. Если я вижу вектор интов, я ожидаю, что там инты, что на push() я создаю новый инт, что на clear() все инты убиваются в памяти сами.
Всё понятно, спасибо. Но плодить копии объектов мне как раз таки не нужно. Я пишу вещь не под инты или некий общий template, а под вполне конкретные классы. Обзову контейнером указателей на тогда, чтобы не было путанницы.

>>22507
> кому надо, укажут, кому не надо — не укажут
Так и сделаю, спасибо.
No. 22510    
>>22509
>добавление
Не добавление, а push_back то есть.
Удалить сообщение []
Пароль  
[Mod]