[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
Имя
Animapcha image [@] [?]
Тема   (новая нить)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP размером не более 10000 кБ.
  • Ныне 2256 unique user posts. Посмотреть каталог
  • Максимальное количество бампов треда: 500
Файл: 141632447157.png-(912.50KB, 990×500, spice_palette1.png)
12145
No. 12145 hide watch expand quickreply       [Ответ] [Последние 50 сообщений]
Здесь я буду коротать долгие зимние за конпелированием конпелятора.
Що уже есть: комментарии, вложенные и однострочные.
Що будет: ничего, как всегда.
84 сообщений и 37 изображений пропущено. Для просмотра нажмите «Ответ».
No. 15546    
>>15539
Не забыл, от этого в языке, позволяющим ассемблерные вставки и прямую работу с памятью никак не уйти. Или так или "джава". Я повторюсь: "Все должно быть четко и полностью определено, без возможности вольного трактования", и уточню: "...трактования компилятором".
No. 15556    
>>15546

Я, честно говоря, всё равно не понимаю, зачем тебе определять всё желаемое поведение программы, если оно полетит к чертям из-за первой же ошибки в unsafe-коде.
No. 15557    
>>15556
Он выше приводил ссылки на три блог поста, где подробно эта тема освещена.
No. 15585    
>>15557

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

В совмещении с языком C/C++ и ассемблерными вставками эти сетования выглядят лицемерно.
No. 15586    
>>15585
Я не ОП, но согласен с его подходом. В том блоге объясняется, что UB существует в стандарте только по одной причине: чтобы позволить писателям компиляторов делать оптимизации. Если ты не ставишь перед собой такую задачу, то нет никаких причин оставлять белые пятна в языке. В случае языка ОПа, который в обозримом будущем будет иметь дай Бог одну реализацию, он может просто сделать удобную для себя спецификацию. От всех напастей небезопасного кода тебя это не спасет, но то что написано на самом языке будет иметь хорошо определенное поведение.
No. 15591    
>>15586

Дык в том-то и дело, что не будет, и пример я уже привёл - какой-нибудь мусор пишется в стек из-за арифметики и программа работает дальше.
No. 15592    
>>15591
>арифметики указателей

>>15586
Вообще, разумеется, пилить свой велосипед всегда хорошо и интересно, просто мне хотелось бы понять, хочет ли ОП чего-то, кроме того, чтобы ошибки в программе проявлялись в предсказуемом виде (и с арифметикой это невозможно).

Файл: 148476737598.jpg-(36.06KB, 433×455, CPlusPlus.jpg)
15488
No. 15488 hide watch quickreply       [Ответ]
Привет. Тут такое дело. В общем, мне 22 года, я закончил бакалавриат по направлению информатика и вычислительная техника, и мой профиль - это соверменный С++ (С++11/14). Проблема в том, что в моём городе полторы вакансии на С++ разработчика, причём одна из компаний мне не особо нравится. Такая ситуация навевает мысли о фрилансе, и тут назревает главный вопрос: котируется ли на фриланс биржах что-то кроме веб-программирования? Могу ли я зарабатывать там, используя свои знания по С++?
No. 15490    
Подписался на обновления.
No. 15491    
https://freelansim.ru/tasks?q=c!plus!plus
No. 15492    
>>15491
Хотелось бы что-то про личный опыт услышать.
No. 15504    
>>15492
Увы, рассказать нечего. Работаю по специальности уже почти 10 лет.
No. 15532    
Фрилансил лет десять назад, в т.ч. на крестах (в веб я не могу). Уже тогда было мало годноты, домашки всякие и т.д. На фрилансерских сайтах сидят а) физлица, которым надо делать домашки либо мелкую автоматизацию труда, б) оче маленькие бизнесы, чаще всего из одного человека. И тем, и другим обычно надо быстро (в разработке) и дешево, тяп-ляп и в продакшн, что с крестами не совместимо.

В исключительно редких случаях нужно что-то ускорить, и там может помочь переписывание кода на кресты, хотя в большинстве этих редких случаев, как обычно, алгоритмические оптимизации дадут гораздо больший прирост производительности. Ускорить код в миллиард раз можно только изменив алгоритм, и как правило после этого уже неважно, на крестах он исполняется или на жс.
No. 15543    
>>15532
Ну, сейчас вроде немного получше.
https://www.upwork.com/o/jobs/browse/skill/c-/

Файл: 148389765767.jpg-(349.97KB, 2048×1536, KSARepair iOS1.jpg)
15403
No. 15403 hide watch expand quickreply       [Ответ]
Привет, ЫЧан
Я хотел бы спросить, нет никого, кто знает Питон и у него есть на руках огрызок с Jailbreak'ом?
Я пытаюсь перенести недавно вышедший Katawa Shoujo Alpha Repair на него, но опыта программирования на питоне нет.
17 сообщений пропущено. Для просмотра нажмите «Ответ».
No. 15434    
>>15433
Спасибо, 6.10.2е
No. 15436    
Найти что-либо на Ren'Py раньше 6.14.0 почти невозможно, как я думаю, ибо большинство игр собиралось Ren'iOS
No. 15437    
Не очень новости, это только на iOS и это можно оставить на совести Ren'iOS
No. 15438    
Надеюсь, тут есть человек с Mac, способный помочь и собрать .ipa для распространения на JailBreak?
No. 15439    
>>15438
>тут есть человек с Mac
есть

>способный помочь и собрать .ipa для распространения на JailBreak?
хм, раньше собирал только для официального стора, но попробовать можно
No. 15441    
>>15439
Тогда сложу все аккуратно в папки для проекта Ren'Py
No. 15466    
>>15437
Там проблема не в renios, а в renpy 6.14.1, выполняющим код от renpy 6.10.2 без script_version.rpy

Файл: 133867222497.jpg-(121.44KB, 600×338, 00000016.jpg)
6903
No. 6903 hide watch expand quickreply       [Ответ] [Первые 100 сообщений] [Последние 50 сообщений]
Господа, определённую инициативную группу посетила идея провести межчановский онлайн-турнир по игре в Кой-кой (http://en.wikipedia.org/wiki/Koi-Koi ), однако найти действующую сетевую площадку для этого нам не удалось.
Если кто-то такую знает, то просим подсказать, а если нет, то хотелось бы сделать свою. Поскольку кодеров среди нас нет, то объявляется открытый реквест на разработку сервера для сетевой игры в этот самый Кой-кой. Проект по идее должен включать возможность игроков играть друг против друга с возможностью централизованного учёта результатов. Для вящей кросс-платформенности уместным будет браузерный вариант.
Образец игры как таковой тут: http://www.gamedesign.jp/flash/hanafuda/hanafuda_e.html (хотя там есть некоторые расхождения с общепринятыми правилами)
Правила в вышеозначенной статье в Википедии, а также в http://www.gamedesign.jp/flash/hanafuda/rule_e.html и http://mywings.ru/5
Если кто-то заинтересовался игрой, а тем паче запиливанием клиента, милости просим.
276 сообщений и 91 изображений пропущено. Для просмотра нажмите «Ответ».
No. 13985    
>>13984
Там, например, англоинтерфейса не было, следовательно позвать иностранцев было нельзя.
Почему его не было, вопрос к разработчику. Но он пропал вместе с сайтом.
No. 14120    
Эй, верните кой-кой мне.
No. 15349    
http://store.steampowered.com/app/364930/?l=russian - ханафуда в стиме за 24р для всех кто скучает по койкою.
Морда если ты меня слышишь - твой койкой был более лучше (хоть этого выражения и не существовало когда ты перестал его делать). Всё ещё надеюсь что оживишь.
No. 15352    
>>15349
Могли бы уже десять раз свою опен-соусную реализацию сделать вместо нытья по одному закрытому сайту.
No. 15458    
Кто-нибудь возрождает?
No. 15459    
Я, но медленно и лениво.
No. 15460    
>>15459
Что уже готово?

Файл: 145703174594.png-(1.50MB, 1047×370, logo.png)
13905
No. 13905 hide watch expand quickreply       [Ответ]
сап стив,
призываются люди, которые владеют английским. Есть сыро-альфа версия VN, в ней пока готов кусочек пролога. Нужны ваши отзывы по повествовательной части. Кто скачает, ознакомится и накатает отзыв чуть длиннее "ОП-хуй" - лучи добра и вечный почет.

скачать можно отсюда:
http://sukebei.nyaa.se/?page=view&tid=1949175
https://mega.nz/#!pFFigB5K!6OxTiMmcw3iWXLOKHqAW1ldJA4L0prZBXNENaD4IlUc

можно кидаться говном и по остальным аспектам, но сейчас больше интересует именно повествование
1 cообщение пропущено. Для просмотра нажмите «Ответ».
No. 13907    
какой бамп, тред с нулевой не ушел еще
No. 14521    
Файл: 147170443266.png-(1.58MB, 1362×744, Безымянный.png)
14521
Зависло на второй битве.
В целом интересно, но не хватает кнопки автобитва или пропуска битвы.
No. 14522    
И ещё хотелось бы сейв чтобы посмотреть всю галерею.
No. 14659    
Файл: 147281568049.png-(2.12MB, 1388×2048, Slot1.png)
14659
ОП, ты заказывал арты или сам фигачишь?
No. 14660    
Файл: 147282271579.jpg-(33.71KB, 512×604, a2k5aC0vG0s.jpg)
14660
>>14521>>14659
SMOLEV ETO TY?
No. 15098    
Оп, пили ещё, годно.
No. 15377    
>>15098
Или нет.

Файл: 147954626377.png-(205.10KB, 322×276, 1479473604982.png)
15085
No. 15085 hide watch expand quickreply       [Ответ]
Можно ди построить сервер, основанный на абсолютном недоверии к администратору?
Например, чтобы каждому IP-адресу был присвоен уникальный идентификатор, чтобы, тем не менее, можно было запретить доступ с нежелательного хоста?
Смысл всего этого - обеспечить анонимность пользователей для администратора, при этом настолько возможную, чтобы в час Х определение пользователей было бы очень затруднено?
Создаю тред, чтобы можно было перерасти в нечто большее
21 сообщений пропущено. Для просмотра нажмите «Ответ».
No. 15183    
>>15180
> Как ему знать, что он не на обычном веб-сервере, например?
Он ставил клиентское ПО этой системы.
No. 15184    
>>15183
А, ок.
No. 15194    
>>15183
Тогда ITT изобретают велосипед. Сам протокол сети строится на нужных механизмах. Сорта промежуточных узлов меняющих IP повсеместно. От чести именно потому потребовалось вводить заголовки для записи сортов "реальных IP", для предотвращения утери этих данных при передаче. ассортимент широк - от роутеров до проксей. Классический пример подключения к сети через подставной компьютер, который действует от своего лица - VPN.
No. 15204    
>>15194
> Сорта промежуточных узлов меняющих IP повсеместно. От чести именно потому потребовалось вводить заголовки для записи сортов "реальных IP"
От этих заголовков есть толк только при доверии добавляющему их. В удовлетворяющей требованиями ОПа системе агент, выдающий токен по IP-адресу, должен быть доверенным и не иметь при этом доступа к содержанию передаваемых клиентом с использованием этого токена пакетов данных. Один из возможных способов достижения доверия заключается в том, чтобы реализовать этот агент как группу из двух или более случайным образом выбранных серверов, участвующих в системе достаточно долго и находящихся в разных странах.
>>15179
> Когда мы не доверяем конкретному админу в конкретной части обработки сетевых операций, простым и очевидным с точки зрения логики шагом, будет вынесение этой самой части подальше от админа.
Да, в этом случае см. >>15091. Но ОП же хочет, чтобы при изъятии серверов "определение пользователей было бы очень затруднено". Для удовлетворения таких требований как раз и нужны распределённость и архитектура, обеспечивающая высокий уровень доверия к системе в целом при низких априорных уровнях доверия к отдельным составляющим её узлам.
No. 15270    
Было бы гораздо интереснее посмотреть на админку для АИБ основанную на полном недоверии к модераторам.
No. 15324    
>>15270
Ну это-то легко.
1) Вместо IP пользователей использовать хеши (уже есть в vichan)
2) Не удалять посты и файлы, а только помечать в базе как удаленные
3) Сделать модераторские сессии
В итоге всё можно будет откатить.
No. 15328    
>>15324
Основная проблема - сохранить анонимность. В режиме модератора сразу видно кто какой пост оставил. А даже если и нет, можно косвенно судить по делолам и банам. А без банов нельзя.

Файл: 148181348889.png-(49.57KB, 348×383, word-icon.png)
15247
No. 15247 hide watch quickreply       [Ответ]
Пишем в этот ИТТ тред по Word`у, постараюсь отвечать на все вопросы и также давать подсказки
No. 15254    
ИТТ треды по ворду лучше начинать с небольшого FAQ.
No. 15268    
Зачем переходить на новые версии после 97?

Файл: 126079791986.jpg-(417.02KB, 800×600, screen.jpg)
1360
No. 1360 hide watch expand quickreply       [Ответ] [Первые 100 сообщений] [Последние 50 сообщений]
В связи с желанием что-нибудь поделать(при отсуствии интереса пилить старые проекты), и отсуствием игр по юккурям решил написать свою.
Пока намечается что-то вроде аркадо-эрпоге, про юккурей(не с их участием, а именно про них). На данный момент уже даже чуть-чуть играбельно. Можно:
+ ходить вперед
+ ходить назад
+ не ходить лол.
+ питаться(даже нужно)
+ бить других юккурей
+ быть побитым другими юккурями
+ Юккури растут с левелом
+ недавно приделал систему диалогов, позволяющую участвовать до 8 персонажей(когда понадобиться, перепелю под бесконечность), правда это пока нигде не используется, но можно писать сюжет с охраной дворца и злодеем.
+ можно создавать своих юккурей, по образу существующих
Нельзя:
- Ничего остального
- Качаться как-либо кроме убийств
- Умереть тоже пока нельзя, для долгого дебага
Сообщение слишком длинное. Полный текст.
116 сообщений и 21 изображений пропущено. Для просмотра нажмите «Ответ».
No. 8870    
>>8869
-_\\
No. 8871    
Файл: 136215161365.jpg-(605.32KB, 960×1280, 1320414160056.jpg)
8871
>>8870
^^
No. 14904    
Как дела у ОПа?
No. 14905    
>>14904
Учитывая, что тред с 2013 года заброшен, скорей всего, ОП уже не с нами.
Тут тоже четыре года нет активности: https://github.com/Yukkurigame/Yukkuri
No. 15108    
Я знал ОПа. Он умер 2 года назад.
No. 15109    
>>15108
Звучит так, будто вруша.
No. 15126    
>>14904
Плюсует, как видно. https://plus.google.com/ SirAnthony

Файл: 146851368039.png-(93.83KB, 1024×600, 654.png)
14246
No. 14246 hide watch quickreply       [Ответ]
Сырны и автобусы, как сделать свой roguelike?
No. 14247    
>>14246
Владик, зачем ты пишешь roguelike?
No. 14249    
А какие элементы рогалика ты хочешь в своей игре?
No. 14262    
Файл: 146866462378.jpg-(1.71KB, 93×42, 1468511977849.jpg)
14262
Ищешь двигло для рогалика, смотришь гуиды там.
No. 14289    
Файл: 146895521433.png-(44.86KB, 356×214, Screenshot_2016-07-19-22-04-21~01.png)
14289
>>14262
> гуиды
No. 15071    
http://www.roguebasin.com/index.php?title=Main_Page
Еще на лурке неплохая подборка ссылок.
No. 15095    
Для ввода-вывода можно использовать termbox.
https://github.com/zyedidia/termbox-d/blob/master/examples/helloWorld/helloWorld.d
Где-то надо держать состояние мира.

Это большая матрица. Т.е. большой одномерный массив размера n*m c методом get(row, column).
Наверно.

Также нужна позиция камеры, чтобы знать, какой фрагмент карты рисовать на экране.

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

Файл: 147240118435.jpg-(365.35KB, 675×900, 219fa572dd066f4298b542a69e3b75ff.jpg)
14602
No. 14602 hide watch expand quickreply       [Ответ]
Привет, 410чан.

Я написал Странный и (скорее всего) Не Вполне Полный Логически СКРИПТ.

Назначение: скрипт-фильтр для PGP-зашифрованных сообщений. Можно натравить на массу писем (но он обрабатывает одно и вызывается с одиночным письмом).

Применение: ./mail_decrypt_verify.sh < pgp-input > dec-ver_output

Поведение:
- если сообщение не зашифровано и не подписано, скопировать без изменений
- если сообщение подписано, проверить подпись и записать сообщение без подписи
- если сообщение зашифровано, расшифровать и записать расшифрованное сообщение и проверить подпись, если она есть

Недостатки:
- мое знакомство с форматом электронного письма весьма краткое, так что сообщение составляется, возможно, грубовато (однако, на протестированных письмах ошибок, приводящих к нечитаемости, не замечено)
- код, скорее всего, не оптимален, да и выглядит он жутко
- для автоматической обработки писем с одним и тем же ключом пока требуется отредактировать скрипт (указать прямым текстом passphrase для ключа)

Достоинства:
- это единственное настолько полное решение подобного класса из тех, что я нашел в Интернете (собственно, отсутствие хорошего шкрепта побудило меня написать один)

Прочее:
- для процессинга писем используются awk, sed, grep (автором использовались программы GNU)
- для расшифровки писем используется gpg
- используемый автором шел: bash
- скрипт не зависит ни от чего больше, кроме, пожалуй, csplit и mktemp
- кривопалый оп больше учился регулярным выражениям, возможностям grep и языку sed и awk, чем писал этот скрипт

Планы на будущее:
- дописать и или переработать
- выучить больше средств и, возможно, переписать это все же на ЯЗЫКЕ ПРОГРАММИРОВАНИЯ

Вопрос:
- кому-то это надо?

По вышеозвученным причинам и неуверенности в нужности сего поделия (мне оно пригодится, а вы как хотите), я не выкладываю сам скрипт пока.
5 сообщений пропущено. Для просмотра нажмите «Ответ».
No. 14636    
>>14620 ну так сделай слияние двух массивов по заранее определённым правилам. тебе же не произвольные строки парсить, всё можно сделать при помощи while и case

и да
>awk...
...в sh = телега с реактивным двигателем. хотя я по молодости делал perl в sh, что вообще Ы, если учесть, что оно таки работало
>sed, grep
sed может делать всё то же, что и grep, и даже больше. тащить в скрипт лишнюю зависимость — плохая идея
>bash
на операционках с rc это дурной тон, там системный интерпретатор — sh
No. 14637    
Файл: 147258816926.png-(894.21KB, 3020×1700, 1463720436021.png)
14637
>>14636
Не, там абы как сливать нельзя все равно. В зависимости от типа контента, надо поступать по-разному.
Хотя, может, под "правилами" ты это и имеешь в виду. Проблема в том, что я с трудом представляю себе эти правила. Пока у меня нагромождение логики, отвечающей за различные специфические случаи, на старой логике. Возможно, я переработаю это полностью. Очень "неприятное" место — именно где требуется совместить типы контента зашифрованного и незашифрованного писем. Думаю, я как раз с этим разобрался.
>в sh = телега с реактивным двигателем
Что ты имеешь в виду? У меня он в довольно простом варианте используется.
>sed может делать всё то же, что и grep, и даже больше.
Я использую grep для МНОГОСТРОЧНЫХ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ (с ключом -P). x_x
sed такого не может, насколько мне известно. Правда, опять же, возможно я смогу обойтись sed'ом для тех задач.
Еще я использую exit code от grep для if в паре мест (sed не вернет мне ненулевой код завершения если ничего не было найдено).
>на операционках с rc это дурной тон
Ну, в первой строке у меня написано #!/bin/sh вообще-то.
Правда я использую штуки вроде ${variable} местами, как и $(code with output) для заполнения переменных, как и наверно что-то еще не свойственное чистому Bourne Shell.
No. 14642    
>>14637 просто надо определить, какие заголовки подлежат модификации, а какие удалению. это и будет набором правил
>Что ты имеешь в виду?
у телеги есть своё предназначение, глупо от нёе хотеть скорости феррари и проходимости Урала
>с ключом -P
>This option is not supported in FreeBSD.
sadfrog.jpg вообще, если так нужны PCRE, стоит задуматься о том, не переписать ли всё на PERL
>sed не вернет мне ненулевой код завершения если ничего не было найдено
он вернёт пустую строку, проверяешь её: [ -z "$string" ] — если строка пустая; [ "$string" ] — если строка не пустая
>что-то еще не свойственное чистому Bourne Shell
http://mywiki.wooledge.org/Bashism
No. 14891    
Файл: 147616751864.png-(399.32KB, 960×720, shot0024.png)
14891
>>14636
> sed может делать всё то же, что и grep
$ grep -P '\p{P}?\p{Cyrillic}\p{P}?' <<<'‘You’re full of shit’ – сказалъ я с позированнымъ взглядомъ. Гдѣ ж ты набрался такого, Ѳетюкъ?'
$ grep -P '\p{P}(?=\w)|\p{P}(?<=\w)' <<<'‘You’re full of shit’ – сказалъ я с позированнымъ взглядомъ.
$ grep -P '(?i)(?|(цалуй)|(лобызай))-\1 лягушонку!' <<<'Цалуй-цалуй лягушонку! Лобызай-лобызай лягушонку!'
Ваш ход, маэстро.
> тащить в скрипт лишнюю зависимость — плохая идея
Это да, нефиг юзать
$ grep -q '^Found$' <<<'Found' && found=t
когда можно православным седом
$ sed -rn 's/^Found$/&/;T;Q1' <<<'Found' || found=t
Красота же. И читабельность на уровне!
> на операционках с rc это дурной тон, там системный интерпретатор — sh
Я надеюсь, вы мох регулярно с пекарен счищаете в своей конторе? А то не дай бог в вентилятор попадёт, у-у…

>>14637
> Я использую grep для МНОГОСТРОЧНЫХ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ (с ключом -P).
sed тоже может обрабатывать многострочные паттерны. Вопрос в том, искать тебе надо или заменять что-то в них. Если последнее, то лучше, конечно, sed.
> sed такого не может, насколько мне известно.
Один пример. http://www.rtfiber.com.tw/~changyj/sed/html/p.20051024a.html
> sed не вернет мне ненулевой код завершения если ничего не было найдено
Я иногда пользуюсь костылём, когда нужно что-то найти, заменить и сказать получилось ли. Если нужно только найти лучше grep -q.
> Ну, в перв
Сообщение слишком длинное. Полный текст.
No. 14998    
>кому-то это нужно
Мне. Выкладывай сейчас, а лучше — на гитхаб, где его можно будет коллективно допиливать.
No. 15018    
Файл: 147844066436.jpg-(134.42KB, 800×872, 4d4117db87e5ab1babd9153c3a9673a4.jpg)
15018
>>14998
>Выкладывай сейчас
Хорошо.

http://pastebin.com/6HZtY7xr
На тему коллективного допиливания: вы можете сами взять этот код. Я его никак не "лицензирую" и, наверно, не стоит этого делать (там еще есть следы кода pgp-alpine-filters).

P.S: выглядит оно как Франкенштейн, но оно "works for me" и вроде неплохо охватило все случаи писем, создаваемых thunderbird и claws-mail.

P.P.S: я забросил разработку с того момента, как этот скрипт решил поставленную мной задачу. Наверное, я просто не очень хороший программист, лол.
No. 15019    
>>15018
О, забыл сказать, что для работы скрипта надо указать в нем самом пассфразу для используемого ключа на месте %passphrase% (то есть, оно расшифрует только те письма, что зашифрованы одним и тем же ключом, для остального его требуется запускать отдельно). Я не нашел иного достаточно быстрого способа расшифровать целую пачку писем. Изначально этот скрипт был "фильтром", то есть дополнительной обработкой для alpine, то есть ручной ввод пассфразы каждый раз виделся там разумным ходом. Можно легко изменить поведение скрипта на такое.

Удалить сообщение []
Пароль  
[Mod]
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]