Ычан: [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 сообщений]
Ответ в нить [Первые 100 сообщений]
Имя
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 кБ.
  • Ныне 3201 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
Развернуть все изображения
No. 21642    
>>21641
В процессе систематизация прошлой нити для пополнения базы знаний.
No. 21644    
>>21641
Черновик обобщенной информации из прошлой нити:

>Хочу сделать поисковик-парсер для одного довольно старого сайта
>>/dev/19688

>Нужен IDE-плагин для CC5X
>>/dev/19754
>>/dev/19764

>Является ли Python + Django хорошим стеком для начала профессиональной деятельности (2018)
>>/dev/19765
>Какие требования предъявляются к джуниорам для стека Python + Django (2018)
>>/dev/20056

>Подскажите курс по машинному обучению
>>/dev/19781
>Подскажите инструментарий для практики по машинному обучению
>>/dev/20988
>>/dev/20990

>Хочу создать простенький 3д-шутер, чтобы разобраться
>>/dev/20005
>>/dev/20007

>Какую специальность лучше выбрать в ВУЗе, чтобы стать программистом (2018)
>>/dev/20014
>>/dev/20018

>Нашли 13 Гб книг по IT-тематике
>>/dev/20146

>Хочу клиент-серверное приложение с броадкастом
>>/dev/20353

>Подскажите гайды по администрированию Windows
>>/dev/20361
>>/dev/20404

>Подскажите гайды по ASN.1
>>/dev/20415
>>/dev/20416
>>/dev/20850

>Подскажите гайды для мультиплеера на Godot
>>/dev/20465

>Чем кавычки отличаются от апострофов в C
>>/dev/20471
>>/dev/20472
>>/dev/20473

>Хочу научиться делать игры
>>/dev/20513

>Подскажите фреймворк для простого десктопного UI
>С точки зрения cовременных реалий
>>/dev/20526
>>/dev/20527
>>/dev/20534
>С точки зрений реалий прошлого
>>/dev/20535

>Подскажите как создать примитивный TCP-сервер на Python
>>/dev/20634

>Поясните применимость Server-side Events в JavaScript
>>/dev/20789

>Чем в C# поля отличаются от свойств с геттерами / сеттерами по-умолчанию
>>/dev/20832

>Cколько времени надо потратить для овладения HTML/CSS/JS
>>/dev/20830
>>/dev/20833

>Подскажите, куда лучше складировать очереди для последующей обработки
>>/dev/20973
>>/dev/20977

>Пример реализации MVP-подхода для веб-приложений
>>/dev/21083

>Подскажите JS-стек для веб-приложений
>>/dev/21136

>Подскажите базовые курсы по созданию ПО
>>/dev/21223

>Подскажите редакторы кода с SSH-терминалом для iPad
>>/dev/21397
No. 21685    
Вопрос по ant.
Что-то я туплю.
Пусть у нас имеется, допустим, свойство а:
<property name='a' value="${filename}"/>

Как мне теперь запихать в свойство b результат применения к свойству а маппера? Например, вот такого:
<globmapper from="*.foo" to="*.bar"/>

No. 21686    
>>21685
>Как мне теперь запихать в свойство b результат применения к свойству а маппера?

Завернув маппер в PathConvert, и указав выводом (property) свойство b, а входом (refid) свойство a ?
https://ant.apache.org/manual/Tasks/pathconvert.html

Пример есть прямо тут:
https://ant.apache.org/manual/Types/mapper.html


<pathconvert property="b" refid="a" targetos="unix">
  <mapper>
     <globmapper from="*.foo" to="*.bar"/>
  </mapper>
</pathconvert>

No. 21687    
>>21686
Действительно туплю. Тем более, что как выяснилось при внимательном чтении мануала, гораздо проще и правильнее применить маппер к самому таску, а не городить этот огрод.
В любом случае — спасибо!
No. 21731    
155397881850.png-(58.51KB, 1005×838, Clipboard01.png)
21731
Почему при клике на сложносочинённую кнопочку иногда не поднимается эвент? Стили при этом переключаются, т.е. событие всё-таки обрабатывается. Пикрилейтед, JS, jQuery, обработчик событий каждого модуля для простоты повешен на документ. Систему определить не удалось, в отладчике проблемы как-бы и нет. Меня это раздражать уже начинает.
No. 21733    
>>21731
А можешь код дать? А то причин может быть много и так в лоб рассуждать это безблагодатность
No. 21735    
155400673221.png-(118.77KB, 1128×879, Clipboard01.png)
21735
>>21733
А тебе код конкретно чего нужен? Это SPA недоделанное. Вот точка входа в приложение — всё, что имеет в зависимостях модель, генерит ивенты. Обработчики везде подключены стереотипно:

function onClick (ev) {
   ... // Do something useful
   return undefined;
}

$(document).on ("click", onClick);

No. 21736    
>>21731
Самый просто вариант - смотреть в дебаге куда идет, разве нет? Ну или поискать остановку ивентов по проекту.
No. 21737    
>>21736
Если бы было так просто, я бы голову не ломала; ну и не спрашивала бы. В дебаггере не удаётся воспроизвести проблему, т.е. любое событие исправно поднимается и обрабатывается. Шуршание по SO выдаёт лишь кучу людей, которые из обработчика возвращают что-то, что конвертируется в false, — мне известо, к чему это приводит и это не мой случай. Какая-то дурацкая проблема, короче, — во вьюхе с разделами кнопки сделаны одиночными div-ами, но даже там событие поднимается через раз, хотя стили переключаются исправно.
No. 21745    
>>21731
>Почему при клике на сложносочинённую кнопочку иногда не поднимается эвент?

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

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

Ты делал что-то подобное?
No. 21747    
>>21745
>в возникшем ивенте click будет указан неправильный eventTarget
С самого начала было заложено, т.е. проверяется target на соответствие селектору и при отрицательном результате ищется его родитель, подпадающий под селектор. Т.е. код вида:

   function pm_onClickEvent (ev) {
      if (!ev.target || !ev.target.parentNode) {
         return;
      }

      var target = jQuery (ev.target);

      if (!target.hasClass ("list-element")) {
         target = target.parents (".list-element");
      }

      if (target.isEmpty ()) {
         return;
      }

      di_model.changeState (
         target.attr ("forum-id"),
         target.attr ("topic-id"));
   }

, простой и прямолинейный.

Может быть это какой-то локальный баг Presto и я зря тут панику развожу. С другой стороны, странно, что о нём никто не знает, будто никто подобных приложений ранее не писал.
No. 21752    
>>21747

В твоём обработчике есть 2 выхода.
1. Если ивент таргета нет вообще
2. Если ивент таргет не соответствует селектору, и у него нет родителей, соответствующих селектору.

В рамках (2) происходит поиск родителей. Но он происходит таким образом, что вернет тебе массив или объект-массив:

target = target.parents (".list-element");


А ты никак его не раскрываешь и передаешь его дальше своей модели как есть. Естественно, аттрибутов forum-id и topic-id у такого элемента не будет, и обработчик не сработает.

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

А еще, пусть это не совсем относится к делу, но если судить по коду, то у тебя странная проверка таргета на пустоту. Если ты конечно не добавил её сам через .prototype и не менял код перед постингом, но зачем

target.isEmpty ()


Как бы в jQuery это делается jQuery.isEmptyObject(a), и таргет там для корректной работы надо раскрыть до нативной ноды а не завернутой jQuery-ноды, поэтому оно должно выглядеть как jQuery.isEmptyObject(target[0]) что передаст туда или нативный массив, или нативный таргет (т.к. у тебя оба завернуты в jQuery)

Сообщай, удалось ли найти проблему, или нет.
No. 21755    
>>21752
Ну, согласно документации https://api.jquery.com/attr/
>.attr( attributeName )
>Get the value of an attribute for the first element in the set of matched elements.
Далее, по https://api.jquery.com/parents/
>.parents( [selector ] )
>the elements are returned in order from the closest parent to the outer ones.
Так что, сколько бы элементов в листе не было, аттрибуты возьмутся у ближайшего к target'у. Далее, модель выполнит изменение своего состояния и исправно породит событие PropertyChange:State; вьюхи получат это событие и начнут перегружать своё содержимое. Т.е. при любых входных данных будет видимый эффект.

>алсо, лучше юзать parentsUntil
Согласна, логически так лучше. Но пока не обязательно ввиду единственности виджета, использующего такие селекторы.

>у тебя странная проверка таргета на пустоту
Она самодельная, как и, например, hashCode и base64Encode. В jQuery почему-то нет метода для проверки на пустоту списка, а писать каждый раз if (obj.length <= 0) как-то утомительно, запутывающе и просто некрасиво, твой вариант ещё хуже, посему пришлось её добавить плагином.

>что передаст туда или нативный массив, или нативный таргет
А вот и нет. Всегда это будет первый элемент списка jQuery-объекта. В JS же массивы можно делать двумя способами: создавать новый инстанс Array () — var a = []; var a = new Array (); —, или делать хэш с числами в качестве ключей — var a = {0 : 10, 1 : 20 }; с этим связан один забавный кейс и одна неразрешимая проблема. В jQuery используется как раз второй вариант.

>Сообщай, удалось ли найти проблему, или нет.
Пересела на хромую Оперу, пока всё работает. Если проблема здесь не проявится, придётся, видимо, смириться.
No. 21761    
>>21733
Да легко: https://bitbucket.org/Milfie/imgboardfrontend/ Больше не сделанного, чем сделанного.
No. 21774    
155433875992.png-(67.75KB, 583×138, Безымянный.png)
21774
Просто хочу поделиться и напомнить, что так не надо.
No. 21775    
>>21774
Что и почему?
No. 21791    
155452949893.jpg-(116.71KB, 1920×1080, 2018-07-11_Jul4001-3840x1080.jpg)
21791
>>21775
мимопроходил
Вероятно, тег инбут внутри блочного и submit как подтверждение. Ставлю на последнее 10 поникоинов.
No. 21792    
>>21791
IMHO, поведение при action="" не определено.
No. 21793    
>>21792
Таки там нужно что-то указывать, если обработчик в другом файле.
>>21775
Абзац внутри формы, почему-то заменяющий label.
No. 21794    
15545582268.jpg-(182.31KB, 1064×1020, 02 - 1064x1020@32 [SIGa21826b1aa05c835064da8a80615.jpg)
21794
Что вы имеете сказать про OpenShift от шапок: https://www.openshift.com/ ?

>>21793
Согласно стандарту HTML, правда не помню, какому именно, то ли 4, то ли 5, пустой action имеет неопределённое поведение, точнее, implementation defined behaviour, т.е. результат отправки такой формы непредсказуем в общем случае. Лиса, например, такую форму просто сбросит в исходное состояние.
Btw, это имеет мало смысла, если submit event обрабатывается внешним обработчиком; у меня, например, форма шлётся ajax-ом, ему всё-равно, какой там action в форме. Ну и сама форма при использовании JS-фреймворков имеет мало смысла, там везде <input data-link="name" /> и прочие биндинги.

>Абзац внутри формы, почему-то заменяющий label
О, Господи!.. Я с таким сталкивалась только когда надо было отображать HTML в Swing-овом JEditorPane, который умеет только HTML3.2 — там тоже есть куча странных тэгов, которые никому не нужны, но хотя бы нет поддержки CSS. Непонятно, зачем вообще сейчас лепить кучу тэгов, отображение которых полностью описывается в CSS?
No. 21795    
>>21794
Можно вообще одни div'ы с input'ами писать.
No. 21799    
155472307949.jpg-(631.81KB, 1280×1024, 33 - 1280x1024@32 [SIG3eb27cf6fc26b448f19d603c9d1f.jpg)
21799
https://www.cyren.com/blog/articles/over-one-third-of-malware-uses-https
Secure != Safe, you know?

https://www.globalsign.com/en/blog/what-is-ssl-inspection/
https://github.com/jsha/minica
Вопрос вот в чём: объясните дуре, как в пределах локалхоста стать авторитетным батей и насколько это будет затратным по CPU? Как я понимаю, для каждого сайта надо генерировать новый сертификат, но это вроде бы не быстрая операция (хотя можно сертификаты кэшировать, конечно). Или проще будет совсем не шифровать контент?
No. 21800    
>>21799
Чего ты хочешь этим добиться и каким образом?
> для каждого сайта надо генерировать новый сертификат, но это вроде бы не быстрая операция
Если генерировать использующий ECC сертификат или слабенький RSA1024, то достаточно быстрая.
No. 21802    
>>21800
SSL Inspection посредством локальной прокси. Мне не очень понятно, как сделать взаимодействие между защищаемым клиентом и проксей, а статей на эту тему мало. Прокся при CONNECT должна ответить OK и сгенерить для запрашиваемого сайта сертификат, далее притворятся, что она и есть тот самый сайт, так?
No. 21806    
>>21802
Сначала связаться с запрашиваемым сайтом, а потом уже ответить OK. Почему для твоего сценария использования не подходит прозрачный MITM? Если ты не запретишь исходящий TLS-трафик не на порт твоего HTTP-прокси, то он останется не проинспектированным.
No. 21808    
>>21806
Так я и говорю про MITM. Обе стороны общаются с проксей думая, что общаются друг с другом. Единственная проблема — надо заморочиться с локальным центром сертификации и руками устанавливать корневой сертификат в каждую дырку. У меня вопрос, в общем-то, — что надо сделать, чтобы стать валидным CA в пределах локалхоста? Функционала этой https://github.com/jsha/minica программы будет достаточно, или нужно ещё что-то сделать?
No. 21809    
>>21808
Под "CONNECT" ты имеешь в виду не HTTP-метод CONNECT?
> что надо сделать, чтобы стать валидным CA в пределах локалхоста?
Воспользоваться программой sslsniff и добавить свой корневой сертификат в доверенные.
No. 21810    
>>21809
Ты знаешь ещё какой-то CONNECT в контексте HTTP, который так пишется?

>Воспользоваться программой sslsniff и добавить свой корневой сертификат в доверенные.
>If you were, for instance, able to obtain a CA certificate somehow
Ну и где мне надыбать этот корневой сертификат для локалхоста, распотрошть програмулину на GO и сделать также, как там?
No. 21812    
>>21810
Тогда по какой причине ты хочешь прокси на уровне HTTP без поддержки других протоколов, которые могут работать поверх TLS?
> где мне надыбать этот корневой сертификат для локалхоста
Сгенерировать, например с помощью команды "openssl req". Sslsniff сама не генерирует корневой сертификат, его предоставляет пользователь.
No. 21813    
>>21812
>Сгенерировать, например с помощью команды "openssl req".
Вот так вот просто: я генерю сертификат и становлюсь локальным центром авторизации всего и вся, Яндекса, Гугла, Неба и Аллаха? Тогда какого беса люди платят им — https://www.globalsign.com/ — сотни баксов за локальные корневые сертификаты, раз их может сгенерировать штатный одмин?
No. 21814    
>>21810
>>21813
Поскольку чую, что вы уже почти распалились до степени, когда просто начнете выяснять друг с другом отношения, то напомню, что для этого есть отдельная Диспутов нить >>/dev/21353
No. 21815    
>>21814
Ты бы по теме лучше чего рассказал.
No. 21820    
>>21813
Не знаю, что у них за услуга. Для доверия самому себе печать сторонней организации не нужна. Браузеры должны игнорировать public key pinning, если цепочка доверия тянется к установленному пользователем корневому сертификату, поэтому это тоже не должно быть препятствием.
No. 21821    
>>21820
То есть никаких проблем с самодельным бессрочным корневым сертификатом быть не должно. Остаётся только хранилище выписанных сертификатов, но это уже программная проблема.

Тогда ещё вопрос: Надо ли обеспечивать устаревание выписанных сертификатов?

>Не знаю, что у них за услуга.
Насколько я поняла, они решают проблему устаревания корневого сертификата, за что и просят несколько сотен баксов в месяц. Опять же, вопрос: устаревание корневого сертификата — это чисто организационное мероприятие, или есть ещё технические нюансы?
No. 21822    
155512572864.jpg-(153.22KB, 664×900, Sakuraba_Milfeulle_full_4043.jpg)
21822
https://github.com/spring-projects/spring-boot/issues/2612#issuecomment-401264199
Как разрешить эту дурацкую проблему? Лепить костыль в ServletContextListener для каждой базы?
No. 21823    
>>21822
Ну, отчасти костыль уже напилили в текущем коде драйверов (тот же PostrgreSQL), добавив метод deregister, который не только отцепит драйвер от драйвер менеджера, но и обеспечит правильное внутреннее состояние драйвера, чтобы тот мог зарегистрироваться потом снова. Соответственно, всё что тебе надо сделать - вызвать такой метод в contextDestroyed. И скорее всего так сделать будет быстрее всего, берешь драйвера которые пользуешь, и в пару строк кода отцепляешь их.

В то же время, можно поступить как авторы драйвера MySQL, и создать драйвер без внутреннего состояния, жизнью которого полностью управляет DriverManager снаружи. Для этого в MySQL создали сначала класс NonRegisteredDriver, куда вынесли код драйвера, выбросив регистрацию в менеджере за борт, а потом уже от него отэкстендили "просто" драйвер, который регистрируется в менеджере.

Если есть время, то можно сделать аналогичный код драйвера для своей базы данных. Таким образом ты сделаешь больше, чтобы потом делать меньше, и также сможешь отправить авторам этот код в виде контрибьюшена. Кстати, может уже кто-то отправил им подобный патч, и можно его позаимствовать
No. 21825    
15553506924.png-(150.40KB, 640×480, 44 - 640x480@32 [SIG455f7546fc53b7465cf9b057eb8ff2.png)
21825
Всё-таки metaspace memleak вызывал org.jboss.logging (https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging), зря я драйвера ругала, их Tomcat сам дерегистрировать умеет. Откат на Hibernate 3.6.x — никаких OOM. Чего теперь делать-то, запихать логгер в %CATALINA_HOME%\lib, вдруг поможет?

З.Ы.: Оставлю толковый гайд по поиску утечек в metaspace: https://habr.com/ru/post/222443/
No. 21830    
>>21825
>запихать логгер в %CATALINA_HOME%\lib
Таки да, и в pom.xml эксплицитно его прописать со scope = provided. Редиски редхатовские...

>>21823
Проще всего будет настроить dataSource на сервере и цеплять его из JNDI как абстрактный java.sql.DataSource. Если это не вариант, то дальше надо наделать костылей: 1) для пула соединений — закрыть все открытые соединения; 2) для драйвера, если он требует каких-то телодвижений, совершить их; 3) собственно дерегистрация — получить загрузчик классов приложения и список драйверов, дерегистрировать только те из них, что загружены приложением; 4) потупить пару секунд. И то это не везде работает. Каких-то других решений отыскать не удалось, у каждого просто есть набор таких костылей, который пихается в каждое приложение.

Остальные подходы, указанные тобой, требуют налаживания контакта с разработчиками — это не всегда завершается успехом: шапки подобные баги (memleak on redeploy) тупо закрывают с “Won't Fix”, например.
No. 21831    
Выгодно ли изучать пролог?
No. 21832    
155545903956.png-(64.27KB, 1978×726, Безымянный.png)
21832
Есть два запроса, в одном синтаксическая ошибка, другой работает. Первый - с ошибкой - написан так, как предлагает phpMyAdmin, второй - с использованием кавычек вида 'а не ` с w3school. Почему так и как мне набирать эти вот ' с клавиатуры? А то постоянно приходится держать открытой вкладку и копировать с неё.
Ну или может где-то какая-то другая ошибка?
No. 21833    
>>21832
Так, что это за кавычки понятно, по коду символа - обычный апостроф. Не понятно почему.
No. 21834    
>>21832
В общем случае обратным апострофом обозначаются имена таблиц и колонок, для строковых литералов используют ' и ".
No. 21835    
>>21834
Имена таблиц и полей интерпретатор из без кавычек понимает, а значения только закавыченные? Интересно. Ну ладно. Спасибо.
No. 21836    
155547731782.gif-(44.17KB, 700×608, 52 - 700x608@32 [SIGd0db8bf6dfe03aa5082108da00f0cc.gif)
21836
>>21834
В общем случае стандартом определены двойные кавычки ["] для идентификаторов и одинарные кавычки ['] для литералов. Обратный апостроф является специфичным для MySQL и может быть отключён в настройках. Если предполагаются миграции в будущем, крайне не рекомендуется привязываться к product specific features.

З.Ы.: https://github.com/ronsavage/SQL/blob/master/sql-99.bnf

>>21835
>Имена таблиц и полей интерпретатор из без кавычек понимает
Только если они не являются ключевыми словами самого языка, иначе надо экранировать. Литералы, в свою очередь, определены через одинарные кавычки.
No. 21837    
Охаё-.

Пишу на Octave (GNU GPL косплей Matlab'а) тулзу для пакетной обработки файлов. Файлы бывают двух типов: с прописанным в имени расширением и без. Для второго случая предусмотрен чекбокс "добавить расширение". Если он выбран, то тулза пытается определить тип файла по его сигнатуре и добавляет в конец имени соответствующее расширение. Если же опция не выбрана, то имя файла не меняется, т.е. остаётся без расширения.

Собственно, вопрос: как правильно реализовать обработку нажатия/ненажатия чекбокса? Я пока додумался до двух вариантов:

Вариант №1.
Просто добавить в главный цикл проверку на нажатый чекбокс, т.е.:
for i=1 to количествоФайлов

    if checkBox
        // чекбокс нажат
        определить_расширение(файлы(i)) // вызываем функцию определения расширения по сигнатуре
    end
    // тут выполняем необходимые операции над i-тым файлом
end

Недостаток этого подхода очевиден: проверка встроена в тело цикла. Если файлов 9000, то будет 9000 бессмысленных проверок на нажатый чекбокс. Не оптимально.

Вариант №2
Сделать две практически идентичных функции, только одна будет вызываться в случае нажатого чекбокса, а вторая — в случае снятого. Всё отличие между кодом функций будет заключаться в том, что в первом случае в цикле ещё будет строчка "определить_расширение(файлы(i))".

Тогда не теряем в быстродействии за счёт отсутствия лишних проверок в цикле. Но две (почти) идентичных функции — тоже как-то избыточно. Или это нормальная практика?

Существует ли более элегантное решение, чтобы функция была одна, но проверка осуществлялась вне тела цикла? Спасибо.
No. 21838    
>>21837
checkBox — это вызов функции или переменная? Если второе, то париться явно не стоит. Если первое, то закэшируй значение в переменной.

>Не оптимально.
Это premature optimization: выводы о том, что надо оптимизировать, делают по результатам профилирования.

>Или это нормальная практика?
Посмотри код любой числодробилки на C/C++, обрети просветление.

>Существует ли более элегантное решение
В конструкторской и проектной деятельности нет такого понятия, как «элегантность» за пределами области дизайна. Т.е. элегантным может быть внешнее оформление прибора или здания, но кишки всегда функциональны. В языках вроде Ada и Java ты можешь накорячить статическую диспетчеризацию — это приведёт к использованию дополнительной памяти и процессорного времени, — но какую проблему она будет решать?
No. 21839    
>>21838
Я благодарен тебе за то, что ты нашёл время написать ответ, но, извини, он мне кажется абсолютно бесполезным и не по существу.

Не нужно быть сверхмозгом, чтобы понять, что каждая дополнительная проверка в основном цикле будет замедлять скорость работы кода (тем более при выполнении на интерпретаторе, коим является Matlab/Octave).

В Matlab/Octave есть встроенный инструмент для бенчмарков — конструкция tic...toc. Если обернуть любой код в эти операторы, то интерпретатор замерит время его выполнения. У меня скрипт почти готов, поэтому было даже интересно провести эксперимент. Я добавил в цикл пустое сравнение, и вот результат при обработке 1000 файлов:
  • со сравнением: 6.75239 seconds
  • без: 6.16035 seconds
Казалось бы, 0.6 секунд, что такого. Но: представь, во сколько раз эти 0.6 секунд растянутся, если запустить тот же код на машине уровня 486. Или если файлов банально будет в 10 раз больше. Ни первое, ни второе мне сейчас не грозит, но нет никаких гарантий, что аналогичная проблема не всплывёт потом в каком-нибудь проекте — там, где это будет уже критично несколько лет назад пришлось писать под i8081, так что это не просто сферическая ситуация в вакууме. Поэтому хочется добавить в свой арсенал паттерн, чтобы в будущем уже на этом не спотыкаться.

> Посмотри код любой числодробилки на C/C++, обрети просветление.
Буду благодарен за конкретные ссылки.

Про элегантность: это просто общепринятый жаргон. Используется, в частности, математиками — ещё часто говорят «красивое» решение (т.к. обычно задачу можно решить несколькими способами; элегантным считается решение с наименьшим количеством шагов или каким-нибудь «трюком»). Программисты старой школы употребляют слово «хак». В моём случае «элегантное» решение должно одновременно обладать двумя свойствами: а) существовать без копипасты одного и того же куса кода; б) не влиять на скорость выполнения цикла.

> checkBox — это вызов функции или переменная?
Булева переменная. Состояние чекбокса (нажат/не нажат). Думал, это понятно из контекста.
No. 21840    
>>21837
>Вариант 2
>Тогда не теряем в быстродействии за счёт отсутствия лишних проверок в цикле. Но две (почти) идентичных функции — тоже как-то избыточно. Или это нормальная практика?

Зависит о скольки строках кода в функциях идет речь, конечно. В общем в случае когда у тебя есть функция 1, которая делает А, и функция 2 которая делает А+Б, то вызов одной заворачивают в другую. Но насколько понимаю, в твоём случае, обе функции представляют из себя цикл прохода по файлам с вызовом каких-нибудь обработчиков, и отличие второй функции - в дополнительном обработчике. Т.е. если ты хочешь повторно использовать код, тебе надо как-то устроить доставку обработчика в тело цикла. И для этого в Octave в целом есть способ, тебе надо этот обработчик передавать параметром в основную функцию, используя function handle:

https://octave.org/doc/v4.2.2/Function-Handles.html

Таким образом, твоя функция с циклом всегда должна ждать аргумент с доп. обработчиком. Но если чекбокс выставлен - ты передаешь настоящий обработчик. А если чекбокс не выставлен - ты передашь пустую функцию. Это решит задачу повторного использования кода, но нужно замерить, на сколько повлияет на быстродействие вызов пустой функции. Всё таки у тебя есть заметная разница по времени уже на 1000 итераций. Алсо, надеюсь ты замеры делаешь по Х раз и потом усредняешь
No. 21841    
>>21839
Вопрос был, напомню:
>как правильно реализовать обработку нажатия/ненажатия чекбокса?
У чекбокса два состояния — включено и выключено. Правильная обработка покрывает оба состояния, что и сделано у вас в коде.

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

>Буду благодарен за конкретные ссылки.
http://www.di-mgt.com.au/bigdigits.html например.

>>21840
>передавать параметром в основную функцию, используя function handle
Это и называется статической диспетчеризацией. Непонятно только, зачем этот огород с вызовами подпрограмм городить, если ему просто if жмёт — оно быстрее-то работать не будет.
No. 21842    
>>21836
Уровень поддержки стандарта уже product-specific. Пользователь phpmyadmin же с мускула долго не слезет.
No. 21843    
>>21842
Где те вендоры, что забивали на стандарт, сгинули в аналах истории? И кому сейчас нужен голый QueryLanguage без поддержки существующими ORM-фреймворками? Так что хочешь-не хочешь, а уровень должен быть достаточный.

>Пользователь phpmyadmin же с мускула долго не слезет.
Это уж ему решать.
No. 21845    
>>21840
Огромное спасибо за конструктивный ответ! Я интуитивно понимал, что что-то такое должно существовать, но не знал, как называется, и как это нагуглить. Могу в процедурное программирование, но как только начинаются всякие классы-указатели-конструкторы, то вступаю на неизведанную территорию.

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

> Таким образом, твоя функция с циклом всегда должна ждать аргумент с доп. обработчиком. Но если чекбокс выставлен - ты передаешь настоящий обработчик. А если чекбокс не выставлен - ты передашь пустую функцию.
Благодарю за объяснение. Попробовал написать простейшую тестовую программу по этому принципу — разобрался. Конечно, смущает бесполезный вызов пустой функции, но, возможно, интерпретатор Octave умеет как-то это распознавать и в реальности ничего не вызывает. В любом случае, будет интересно поэкспериментировать. Да, для чистоты эксперимента, разумеется, буду делать несколько замеров.

Ещё раз спасибо за ответ "в точку"!

>>21841
> Работает как надо? Всё, выдыхайте.
Всю жизнь именно таким подходом и руководствовался, но недавно решил чуть строже к себе относиться, поэтому теперь стараюсь хоть иногда критически задумываться над своими решениями "в лоб". Даже если в этом проекте в итоге не применю эту фичу, то всё равно было полезно узнать о её существовании. За термин "статическая диспетчеризация" спасибо, хотя беглое гугление показало, что её в основном обсуждают в контексте языков, на которых я вряд ли когда-либо буду писать (Java, Swift, C#, etc).
No. 21847    
>>21845
>Всю жизнь именно таким подходом и руководствовался, но недавно решил чуть строже к себе относиться, поэтому теперь стараюсь хоть иногда критически задумываться над своими решениями "в лоб".
А меня всю жизнь учили считать, в частности, в процентах. Поэтому я посчитала и обнаружила, что вы в работающей программе под среду выполнения, специализированную для математиков, боретесь за ~5 % производительности, т.е. как-то выбиваетесь из категорий студент-с-курсовой и вкатывальщик-с-пет-проектом. Если вас волнуют такие малые значения прироста производительности, было бы неплохо поделиться с тредом доходами от бизнеса за product-specific optimizations.
No. 21848    
>>21845
Обязательно сообщай о результатах, мне тоже интересно. Особенно, будет ли вызов пустой функции дороже условия.
No. 21849    
>>21837
>Не оптимально.
Ты обрабатываешь файлы. Доступ к диску - это миллисекунды. За одну миллисекунду ты таких проверок можешь сделать несколько миллионов. Более того, при каждом доступе к файлу тебя ось будет помещать в сон, пока диск работает.
>>21839
>нет никаких гарантий, что аналогичная проблема не всплывёт потом в каком-нибудь проекте
Вот когда всплывёт, тогда и будешь думать.
>>21848
Вообще, должно быть. Потому мне сложно представить вм, где вызов функции был бы легче проверки условия.
No. 21851    
Ой, сколько мой небольшой вопрос внимания привлёк. Неловко даже как-то.

>>21847
> Если вас волнуют такие малые значения прироста производительности, было бы неплохо поделиться с тредом доходами от бизнеса за product-specific optimizations.
Смешно. Я пишу исключительно для себя, в качестве хобби, попутно обучаясь чему-то. Причина, по которой я обратил внимание на такую мелочь в том, что хочу привыкнуть создавать качественный код. Надо же как-то развиваться.

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

>>21849
> Вот когда всплывёт, тогда и будешь думать.
Так он и всплыл, я благодаря этому услышал разные точки зрения, и в следующий раз уже не буду обращаться за помощью сообщества. Это же хорошо.
No. 21857    
155577653627.png-(2.37KB, 90×50, java.png)
21857
У меня очередной глупый вопрос!

Кто-нибудь в курсе, как расставляются приоритеты для резолверов в org.springframework.web.servlet.view.ContentNegotiatingViewResolver#viewResolvers в случае, когда имеется более одного резолвера, готового отдать представление? Я сделала через свойство "order" (org.springframework.core.Ordered), но мне кажется, что это какой-то product-specific хак и гарантии его работоспособности с другими версиями фреймворка нет. В документации этот момент как-то опущен: вроде нигде не написано, что так делать нельзя, но нигде и не написано, что так делать стоит.
No. 21861    
Скоро у меня будет проверочная работа. Меня усадят за неизвестный мне компьютер и я буду выполнять задания, которые я уже выполнил. Вот они

https://anonfile.com/q478M6g4n1/contol_job_3_zip

Спасибо АИБ
No. 21863    
>>21857
Мне кажется, это всё же покрывается в мануале, в главе Chaining Resolvers:

>Spring supports more than just one view resolver. This allows you to chain resolvers and, for example, override specific views in certain circumstances. Chaining view resolvers is pretty straightforward - just add more than one resolver to your application context and, if necessary, set the order property to specify an order. Remember, the higher the order property, the later the view resolver will be positioned in the chain.

Т.е. самим зарегистрированным в ContentNegotiatingViewResolver резолверам ты точно так же выдаешь приоритет через конфигурацию
<bean id="excelViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">

  <property name="order" value="1"/>

или из кода, как сделал ты.

Также в референс-мануале по методу setViewResolvers у ContentNegotiatingViewResolver говорится, что

>Sets the view resolvers to be wrapped by this view resolver.
>If this property is not set, view resolvers will be detected automatically.

Что полностью подтверждает легитимность идеи использовать проперти order для вью резолвера.

Также я вижу, что приориетность по Ordered крайней широко используется в самом спринге: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/Ordered.html

Думаю никакому серьезному риску, используя Ordered, ты себя не подвергаешь.
No. 21864    
>>21863
>Мне кажется, это всё же покрывается в мануале, в главе Chaining Resolvers:
Ну, если пользоваться обычным для Джавы способом получения информации (т.е. JavaDocs & sources), то пробежав по цепочке Ordered -> OrderComparator -> AnnotationAwareOrderComparator -> [Find usages] -> CNVR можно обнаружить, что список viewResolvers сортируется в CNVR#initServletContext при помощи AnnotationAwareOrderComparator — т.е. (hint!) чтобы эта магия работала надо в кастомный резолвер заимплементить интерфейс Ordered, — а сам CNVR#resolveViewName просто вернёт первый попавшийся резолвер из списка резолверов для первого попавшегося MIME-типа из списка MIME-типов взятого из заголовка Accept. Вот этого в документации (по крайней мере в JavaDocs) и нет.
No. 21870    
1. Функция, которая принимает указатель на число:
void get_screen_size( int *width, int *height );

2. Функция, которая принимает указатель на строку:
enum error_status get_string_from_user( char **result );

3. Функция, которая принимает указатель на массив строк:
int split_command_line( char ***result );

4. Функция, которая принимает указатель на массив хендлов строк:
??? do_what?( char ****result );

5. Функция, которая ??? ??? ?
6. ???
No. 21871    
>>21870
Это не вопрос.
No. 21872    
Я в реальном проекте (правда на плюсах) видела, как int хранили в структуре в виде массива byte-ов и при каждом обращении тупо кастовали byte[] в int. Наверное, этому есть какое-то разумное объяснение.

>>21870
А что удивляет, что можно сделать ссылку на ссылку и ссылку на объект, аллоцированный на стеке?

type Access_String is access all String;
type Access_Access_String is access all Access_String;
... e.t.c.

No. 21873    
А вот если у нас есть, например, операционная система, и она хранит, например, список имён, импортируемых программой из определённой библиотеки, в массиве. И хранит она не строки, а хэндлы. И весь импорт программы получается массивом массивов хендлов. И тогда функция, которая их возвращает (вместе в размером первого массива) будет иметь вид
enum error_code get_imports( char *****result, int *length );

Хотя и немного притянуто за уши, конечно. А вот шесть - тут уже всё. Видимо пятизвёздочный код - это as far as one can go.
>>21872
Самое очевидное - им нужен был более удобный доступ к отдельным байтам. Структуру можно всё ещё использовать как число - она автоматически копируется, и всё такое, а чтобы вытащить отдельный байт, не нужно делать сдвиги и маски.
No. 21875    
>>21873
Ой, да вот, держи: функция, которая отрисовывает массив кадров на которых на xy(z)-плоскости надо отрисовывать строки, в каждую точку может быть передан массив хэндлов строк, по указателю.
char****(*)***

No. 21876    
>>21873
>>21875
Если вы просто хотите что-то обсудить, для этого есть Диспутов нить >>/dev/21353
No. 21877    
155635756745.png-(166.83KB, 1400×982, Clipboard01.png)
21877
Я спятила и рисую буквы!
Знаете ли вы, что:
1) в штатном шрифте Вакабы буквы “a” и “e” выше букв “c” и “o”, но ниже букв “d” и “k”;
2) штатный рисователь Вакабы не учитывает смещения в результате трансформации символов, поэтому они могут некогтролируемо выходить за границы холста и налезать друг на друга;
3) в Джаве кривой дефолтный рандом-генератор это вам не Ada с вихрем Мерсена;
4) можно изменить цвет капчи указав для captcha.pl параметр “selector” в GET-запросе, который содержит имя CSS-селектора в текущем стиле.

А вопросы вот какие:
1) насколько харамно использование ResponseEntity<E> во всём контроллере? Ну, мне так удобней просто коды ответа проставлять.
2) верно ли, что каждый микросервис должен иметь собственную базу с аккаунтами приложений-клиентов?

>>21873
Всё бы ничего, но результирующая переменная называлась width и хранила ширину символа. Всё бы ничего, но разработчик библиотеки решил пойти дальше и в том же массиве сохранял бинарные данные этого символа.
No. 21878    
Принесла вам тут краткий гайд по формату GIF с картиночками: http://home.onego.ru/~chiezo/gif.htm

>>21877
>Знаете ли вы, что:
5) в штатном gif-ассемблере Вакабы есть редко появляющийся баг, вызванный тем, что байт конца графического блока принимается за часть последнего графического субблока.
No. 21880    
Стив, поясни про JAX-WS. Мне почему-то кажется, что он немного мёртвый. Или это его нормальное состояние?
No. 21881    
Я спрошу тут, если можно.
Допустим, я с помощью симметричного шифрования хочу зашифровать огромный архив с моими данными. Это достаточно надёжно? Насколько я понимаю, всё шифруется по какому-то сложному алгоритму типа RSA и используется один пароль для зашифровки и расшифровки. Использую gpg
No. 21883    
>>21881
Вопросы, не имеющие прямого отношения к разработке ПО, лучше задавать в /s/.
> Насколько я понимаю, всё шифруется по какому-то сложному алгоритму типа RSA и используется один пароль для зашифровки и расшифровки.
Конкретно RSA используется не для симметричного шифрования. По умолчанию для симметричного шифрования gpg использует AES-128 или CAST5. Да, один пароль для шифрования и расшифровки, но для реальной безопасности в наше время он должен быть очень длинным, то есть это должна быть "парольная фраза". Я рекомендую использовать пароли с энтропией не менее 200 бит (например не менее 15 выбранных гарантированно случайным образом слов из словаря, причём вероятность выбрать любое слово должна быть одинаковой).
> Это достаточно надёжно?
Если у тебя архив больше 4 гигабайт, то не используй шифры, оперирующие 64-битными блоками (это, в частности, CAST5, 3DES, Blowfish), потому что они подвержены birthday attack при использовании одного и того же ключа для таких больших объёмов данных. Практически реализуемые атаки на остальные используемые в gpg симметричные шифры в открытой литературе не описаны. Шифры с длиной ключа 128 бит могут быть взломаны квантовыми компьютерами лет через 10. Если важна безопасность на более долгий срок, то лучше использовать шифры с длиной ключа не менее 256 бит. GnuPG сам по себе не обеспечивает plausible deniability и защиту от утечки твоего пароля через кейлогеры, электромагнитное излучение клавиатуры, звук нажатий, наводки в электрической сети и другие подобные каналы.
No. 21884    
>>21883
> Вопросы, не имеющие прямого отношения к разработке ПО, лучше задавать в /s/.
Смысл? Там сидят 3,5 человека, которые спорят в одном треде, хорош линукс или плох. Тут хотя бы знающие люди есть. Извиняйте, что ворвался в ваш уютный тред.
No. 21886    
>>21883
>квантовыми компьютерами лет через 10
Сразу после того как помрёт флеш и настанет год десктопного линукса.
No. 21910    
155742370079.png-(326.99KB, 1024×768, 461148019.png)
21910
Анекдот про математика и устойчивость стула...
Как сделать регистрацию новых пользователей и их авторизацию в приложении средствами Java EE 7 без использования сторонних фреймворков вроде Spring Security или Shiro и без привязки к конкретному серверу? Иными словами, можно ли родить универсальное plugable решение, когда приложение и его база от сервера не зависят? Я уже который день хожу вокруг да около и всё никак не пойму, как развёртывать это Security. Просто таскать с каждой фитюлькой на пару килобайт ~20 MB Spring-овских зависимостей не хочется.
No. 21916    
>>21910
Чего нашла: https://arjan-tijms.omnifaces.org/2012/11/implementing-container-authentication.html — enterprise, бессмысленный и беспощадный.
No. 21947    
Кому делать нечего помогите запилить свою имджборду на 000webhost.com. Пытался по гайдам в инете, но, не зря я тут сижу же. Если не хотите общатся тут, так и напишите, дам почту или телегу. Если кто-то заинтересуется могу описать проблему детальнее
No. 21951    
Что-то вкладочек открытых накопилось...

https://dennis-xlc.gitbooks.io/restful-java-with-jax-rs-2-0-2rd-edition/content/en/index.html — книжечка по REST-сервисам в Java EE 7.

>>21916
Основная фича JASPIC — это отсутствие состояния, таким образом он отлично подходит для контейнеронезависимой реализации системы аутентификации REST-сервисов. Сессии, если они нужны, надо включать ручками в реализации ServerAuthModule#validateRequest: https://arjan-tijms.omnifaces.org/2013/04/whats-new-in-java-ee-7s-authentication.html

https://stackoverflow.com/a/31314790 — два подхода к реализации кастомной JASPIC-системы аутентификации. Пример от Ораклов для второго подхода: https://docs.oracle.com/cd/E19798-01/821-1752/gizeb/index.html
No. 21958    
155820386788.png-(16.32KB, 400×433, 002c809093dc00a4829d04740d53fc976cd50e8c.png)
21958
Как решается проблема коллизий в Object.hashCode () когда надо получить уникальный идентификатор объекта в пределах JVM? Одной девочке вот такое вот в голову пришло:

this.uniqueId = ((((long) System.identityHashCode (this)) & 0xFFFF_FFFFL) |
                (System.currentTimeMillis () << 32)) & 0x7FFF_FFFF_FFFF_FFFFL;

No. 21959    
>>21958
>когда надо получить уникальный идентификатор объекта в пределах JVM
Разве не так?
https://docs.oracle.com/javase/9/docs/api/java/util/UUID.html
No. 21960    
>>21959
К сожалению, он как минимум чисто теоретически может вернуть дубликат тому що UUID.randomUUID (). Ну и не является примитивным типом, что тоже радости особой при работе не добавляет.
No. 21966    
Ладно, Баг с им, с этим багом Java Core since 2005, который won't fix, не баг и вообще мы вам ничего такого не обещали.

Расскажите лучше юз-кейсы для JPA Criteria API: ну сделали типа JPQL в виде функций, а зачем? Всё-равно для любой работы с базой сложнее find, persist, merge, remove надо делать слой DAO, а там хоть plain-text-ом запросы пиши.

>>21951
JPA/SQL:
https://use-the-index-luke.com/sql/clustering/index-only-scan-covering-index — очень дешёвый поиск и очень дорогая вставка. Используется во всех realm-ах (ну, в Tomocat и TomEE точно). Пример из жизни и не очень: https://dba.stackexchange.com/a/188997 Представление составных ключей для JPA (JSR 338 §2.4): https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Composite_Primary_Keys
No. 21971    
Всем привет и добрый вечер. Заранее извиняюсь за флуд, но больше спросить негде.
Вместе с группой решили сделать подарок преподователю алгоритмов и структур данных (сам работает лидом, увлекается тем же что и преподает). Вариантов не так много. Если книгу, то какую (Кормен есть).
Буду рад услышать любые идеи.
No. 21972    
>>21971
>Книгу
Как насчет
https://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397
На удивление хорошие отзывы. И там можно чуть-чуть почитать прям с амазона, чтобы понять, ок или нет.
No. 22052    
Можно ли на C без библиотек и ассемблерных вставок вывести в линуксовую консоль текст?
No. 22055    
>>22052
Только без сторонних библиотек или же без стандартной библиотеки среды выполнения C? В первом случае
#include <stdio.h>
и
puts("text")
, во втором в общем случае нельзя, для некоторых архитектур может быть возможно выполнить системный вызов через вызов функции по определённому адресу. Для старых версий ядра в заголовочных файлах поставлялись макросы _syscall для выполнения системных вызовов без стандартных библиотек, но это было давно и не для всех архитектур.
No. 22058    
>>22055
Речь про второй вариант. Правда, я так понимаю, такое положение дел у всех языков высокого уровня?
No. 22061    
>>22058
>c
>высокий уровень
У меня для тебя плохие новости
Но вообще, у любых скриптовых это не так
No. 22064    
>>22061
>c
>низкий уровень
Для тебя у меня тоже нет хороших новостей.
No. 22065    
>>22052
>>22058
>Можно ли на C без библиотек и ассемблерных вставок вывести в линуксовую консоль текст?
>без стандартной библиотеки среды выполнения C

С ходу я вижу условно "простой" вариант это узнать.

1. Взять код функции, которая выводит текст из стандартной библиотеки.
2. Посмотреть, как организован вывод на экран там.
3. Если он сделан без ассемблера - круто, можно позаимствовать. И это отвечает на твой вопрос.
4. Если он сделан на ассемблере - то значит скорее всего без него нельзя. И это тоже отвечает на твой вопрос.
No. 22066    
>>22061
>Но вообще, у любых скриптовых это не так
У любых скриптовых и обкладка ввода-вывода большая.
Стало понимать, любому высокоуровневому языку требуется библиотека ввода-вывода для нормальной работы?
No. 22069    
>>22066
> Стало понимать, любому высокоуровневому языку требуется библиотека ввода-вывода для нормальной работы?
Смотря какое окружение и что понимать под нормальной работой.
> Можно ли на C без библиотек и ассемблерных вставок вывести в линуксовую консоль текст?
Можно сделать это из ядра или драйвера.
No. 22070    
>>22066
Компилятор любого языка и так преобразует выскоуровневый код в "ассемблерные вставки", если printf реализован в языке как оператор, это же не будет считаться библиотекой ввода-вывода? Запись в память по такому-то адресу не требует никаких библиотек, а в контроллере может быть настроен DMA, чтобы выводил любые байты в таких-то адресах на экран.
Так что о чем вопрос вообще? Наличие или отсутствие прослоек - вопрос удобства.
No. 22141    
155985448954.jpg-(167.40KB, 1284×1920, 847184-milfeulle_sakuraba_25.jpg)
22141
JavaEE is rock!!! Ooooyuuueeee! https://medium.com/@swhp/playing-with-java-ee-security-jsr-375-soteria-38e8d2b094d4

Btw, у меня семёрка и JASPIC 1.1. Основная каверза здесь состоит в том, что видимо реализованы только AuthStatus.SUCCESS и AuthStatus.SEND_CONTINUE; на остальные значения сервер порождает пустой 200 OK, а для AuthStatus.SEND_SUCCESS не регистрирует сессию. Пришлось всегда возвращать SUCCESS и делать LoginBean с preRenderView листенером, который проверяет результат процедуры аутентификации и делает редирект.

Поскольку мне надо сделать несколько видов аутентификации в одном приложении, пришлось в SAM-е делать auth procedure builder на enum-ах и конфигурялку, в которой описывается, какой метод для каких ресурсов применять. Как всё это тестировать не имею ни малейшего понятия, лол.

>>22052
В Си не предусмотрен интерфейсинг, так что нет. В Аде можно дёргать произвольные системные вызовы предварительно описав их профили в спецификации ну и слинковав с бинарником с реализацией, btw получишь все прелести несовместимости языковых абстракций, что заставит в итоге писать обёртку наполненную доверху Ada.Unchecked_Conversion и долго и нудно её тестировать на предмет UB потому что, там где Си, там UB inb4: диды сорок лет с этим жили и ты живи, не выёбуйся. Хуже того, в Си не стандартизирована процедура передачи управления подпрограмме в смысле нет стандартного способа передачи параметров и возврата результата, значит таких спецификаций надо будет несколько, иначе о кросскомпиляции можешь забыть ну или таскать всё своё с собой, включая исполнителя, по рабоче-крестьянски — виртуальную машину.

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

Ввод-вывод — это тоже абстракция. Кому-то надо писать в командной строке «Привет, Мир!», кому-то надо писать логи в файл на лог-сервере, кому-то надо гонять объекты через сеть. Стандартный ввод-вывод — это абстракция над абстракцией, такое себе гипер-обобщение способов передачи данных.

Даже int21h — это абстракция.

Чтобы абстракция начала работать, требуется её реализация.

>>22070
Компилятор работает с семантикой, т.е. с контрактами на изменение видимого состояния, которые мы выше придумали и записали в спецификации языка. Как будет реализован контракт — это проблема инженеров: если им проще дёргать printf из libc, значит так тому и быть; если им проще if-then-else сделать коллбэками на том же самом языке, который они компилируют, (такой процесс преобразования одних языковых конструкций в другие называется итеративная компиляция) — значит так и будет. По итогу твой printf оказывается завязан на огромную инфраструктуру и без неё полезен так же, как может быть полезен смеситель без водопровода.
No. 22147    
http://balusc.omnifaces.org/2010/06/benefits-and-pitfalls-of-viewscoped.html#ReallySimpleCRUDNowWithoutDataModel Что-то я очень медленно въезжаю в этот JSF. С одной стороны есть куча туториалов, с другой Балус их все обозвал нехорошими словами. Видимо надо для одного ресурса @ViewScoped контроллер совместить с темплейтами https://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/ и сверху накатить библиотеку ресурсов https://www.mkyong.com/jsf2/resources-library-in-jsf-2-0/ тогда оно заработает. Только вот в контроллере придётся, похоже, описывать конечный автомат, иначе будет неясно, какой шаблон когда грузить.
No. 22150    
155989424610.png-(13.85KB, 738×281, вапвапрвапва.png)
22150
Есть вордпресс, на вордпрессе есть редукс, в редуксе есть типография, а в типографии нет выбора шрифта. Можно ли его туда вернуть?
No. 22170    
>>22150
Надо копать глубже, но я подозреваю что какие-то проблемы с данными. Включено использование Google Fonts?
No. 22172    
>>22170
А зачем нужны гуглошрифты, если сами шрифты у меня тут лежат?
No. 22174    
>>22147
https://stackoverflow.com/a/8503788
Оказывается, шаблоны работают по принципу конкретизации абстракций, т.е. надо написать абстрактный шаблон-лайаут, потом каждое представление от него наследовать и переопределять блоки <ui:insert>; а потом делать композицию при поддержке контроллера

<ui:composition>
   <ui:include src="#{controllerBean.activeView}" />
</ui:composition>

, тогда URL ресурса меняться не будет и оно будет как @ViewScoped работать. А я по привычке пытаюсь в шаблон параметры запихать, вот дура-то...

Основная проблема JSF — он не умеет генерировать динамические ресурсы вида /app/user/{id}, может лишь /app/user.xhtml?id={id}, однако при postback-е теряет часть "?id={id}". Но вы можете переопределить ViewHandler.getActionURL (): https://stackoverflow.com/questions/10352641/handling-view-parameters-in-jsf-after-post
248 сообщений пропущено. Показаны 100 первых сообщений.
Удалить сообщение []
Пароль  
[Mod]