|
|
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Взять к примеру 3D, кто сейчас для написания игры разрабатывает математику? Никто, просто берут движок и создают новую игру, то есть (как я понимаю) рисуют объекты и пишут сценарии. То есть программирование очень высокоуровневое. Почему в базах данных сейчас то же самое что было лет 20 назад? Каждый раз когда нужно создать, к примеру, учётную систему даже те, кто делает это не первый раз, пишут всё заново? Создают таблицы, пишут хранимки и т.д. Или это просто я в таком окружении нахожусь? Почему, когда я кому-то говорю об общих принципах всех учётных движков, то за спиной крутят пальцем у виска (я краем глаза вижу) и каждый начинает уверять, что уж его-то задача из ряда вон и это уникальный частный случай, где общими принципами не обойтись. Может уровень разработчиков БД намного ниже, чем уровень 3D-шников? Или может быть плохо написанная база данных всё-таки будет работать, а вот плохо проработанная математика в 3D игре не будет работать просто никак? Есть среди читающего народа те, кто использует один учётный движок без изменений в каждом новом проекте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 12:38 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickКаждый раз когда нужно создать, к примеру, учётную систему даже те, кто делает это не первый раз, пишут всё заново?дык 1С ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 12:59 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickВзять к примеру 3D, кто сейчас для написания игры разрабатывает математику? Ведущие разработчики. Old NickНикто, просто берут движок и создают новую игру А так делают... те, кто двигается к ведущим позициям. Old NickПочему в базах данных сейчас то же самое что было лет 20 назад? Каждый раз когда нужно создать, к примеру, учётную систему даже те, кто делает это не первый раз, пишут всё заново? Создают таблицы, пишут хранимки и т.д. Или это просто я в таком окружении нахожусь? В таком окружении находитесь. Old NickПочему, когда я кому-то говорю об общих принципах всех учётных движков, то за спиной крутят пальцем у виска (я краем глаза вижу) и каждый начинает уверять, что уж его-то задача из ряда вон и это уникальный частный случай, где общими принципами не обойтись. Видел таких. Лечить. Old NickМожет уровень разработчиков БД намного ниже, чем уровень 3D-шников? Ошибаетесь, они одинаково низки. Old NickИли может быть плохо написанная база данных всё-таки будет работать, а вот плохо проработанная математика в 3D игре не будет работать просто никак? В этом пожалуй есть своя правда. Old NickЕсть среди читающего народа те, кто использует один учётный движок без изменений в каждом новом проекте? Что значит "без изменений"? Подозреваю, все нормальные люди используют движок и потихоньку его улучшают. В том числе исходя из требований новых проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:04 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Про улучшение я не спорю. Это не изменение всё-таки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:06 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Как бы мне окружение сменить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:07 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickКак бы мне окружение сменить? Берешь лист формата A4 и пишешь - Заявление. <cr> Прошу уволить меня по собственному желанию ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:20 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
> Как бы мне окружение сменить? Не окружение нужно менять, а подход. Какая разница, кто протирает штаны за соседними рабочими столами, если Сеть - она вот, и там куча интересных проектов и грамотных разработчиков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:32 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickЕсть среди читающего народа те, кто использует один учётный движок без изменений в каждом новом проекте? без изменений нет. Разве что в качестве шаблона, чтобы каждый раз не прописывать повторяющиеся процедуры и не рисовать отчеты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:51 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old Nick... один учётный движок без изменений в каждом новом проекте? Что есть "учётный движок"? Если это костяк, на котором нарастают мясо и кожа, то "без изменений" - это "пластическая операция", но тогда и речь можно вести о новых внедрениях в рамках одного проекта, а не о новом проекте. Imho. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 14:10 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Что толку писать заявление, если следующая контора ничем не отличается от предыдущей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 14:14 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
LRЧто есть "учётный движок"? это вечный двигатель, о котором все мечтают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 14:33 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Я согласен с автором топика, нужна "Теория складостроения". Скажем есть 1с, есть Navision http://www.gotdotnet.ru/Forums/Dynamics/340895.aspx Есть Case средства, но всё это само по себе! Каждый программмер на коленке вояет и как не странно это находит спрос! То есть индустриальная революция сюда ещё не добралась. Значит надо понять что ей мешает и тогда всё будет как у всех! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 14:41 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
В догонку - и периодически на форумах появляются такие вопросы, типа мне заказали написать склад! Подскажите, кто может что это такое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 14:43 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Интересная аналогия - программист портной. В 19 веке портного приглашали в дом (семью) и он живя там перешивал всем одежду, как сейчас программиста для создания учетной системы. В то же время для создания учётной системы у купца ничего не изобретали, а приглашали бухгалтера! Так как бухгалтерия была универсальной учётной системой. Если интересно могу далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 17:40 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickПочему в базах данных сейчас то же самое что было лет 20 назад? Каждый раз когда нужно создать, к примеру, учётную систему даже те, кто делает это не первый раз, пишут всё заново? Создают таблицы, пишут хранимки и т.д. Или это просто я в таком окружении нахожусь? Ну во-первых, сейчас совсем не то же самое, что было 20 лет назад. Раньше в банковских, например, системах (и в наших и в западных) оттлакивались от понятия "закрытие операционного дня". Сейчас все больше и больше систем, которые позволяют работать без закрытия дня, в разных часовых поясах и в круглосуточном режиме. Я видел 4 учетных системы и учетная часть в них была устроена принципиально по-разному. Один из вариантов был явно неудачным, а три оставшихся вполне разумными. У каждого были свои преимущества и свои недостатки. Так что не все из тех, что "пишут заново" явные безумцы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 17:41 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Если пишут заново, то значит прошлый раз ошиблись. Тогда резонный вопрос, почему все (почти) учатся на своих ошибках? Наверное, знаете кто учится на своих ошибках. А вот ссылка на теоретический труд, план счетов , так что если кто не знает как проектируется можно взять здесь. Интересно, а есть ли вообще книга по проектированию учётной системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:00 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Old NickЕсли пишут заново, то значит прошлый раз ошиблись. Тогда резонный вопрос, почему все (почти) учатся на своих ошибках? Наверное, знаете кто учится на своих ошибках. Если пишут заново в изменившихся условиях, то это не значит, что в прошлый раз ошиблись. Old Nick А вот ссылка на теоретический труд, план счетов , так что если кто не знает как проектируется можно взять здесь. Интересно, а есть ли вообще книга по проектированию учётной системы? Честно скажу, что в этом теоретическом труде не все так гладко. Например, "Многие разработчики из соображений оптимизации информационной системы по скорости также хранят такие промежуточные данные, как обороты по счетам и корреспондирующим счетам за определённый промежуток времени. По моему мнению, подтверждённому личной практикой, такая оптимизация не оправдывает себя как по выигрышу в скорости, так и по затратам на реализацию." говорит о том, что автор,скорее всего,не сталкивался с системами делающими по миллиноу проводок в день с необходимостью получать отченость за произвольные интервалы времени. Также автор проповедует модель "двусторонних" проводок (в каждой есть счет дебета и счет кредита). Для некоторых учетных задач это неудобно. Гораздо удобнее реализовывать учет односторонними проводками. Можно указать и еще целый ряд спорных моментов. Способов реализации учета довольно много и какой из них выбрать для конкретной задачи вопрос не однозначный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:11 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
iscrafm LRЧто есть "учётный движок"? это вечный двигатель, о котором все мечтают абалдеть! дайте два ... у меня был друг, его звали фома ... у него была навязчивая идея слепить модель бд которая бы выступала "учётным движком" ... да практически всего :)) он шел по пути уменьшения количества таблитц. сначала было таблиц 8 потом 5, потом кажись дошел до трех, деревянных ... а сейчас бросил пить, если нужно какой левак по быстрому - лепит модель на 15-20 таблиц на колене и все довольны, все смеются ... что-то в этом есть ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:12 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
гм... iscrafm LRЧто есть "учётный движок"? это вечный двигатель, о котором все мечтают абалдеть! дайте два ... у меня был друг, его звали фома ... у него была навязчивая идея слепить модель бд которая бы выступала "учётным движком" ... да практически всего :)) он шел по пути уменьшения количества таблитц. сначала было таблиц 8 потом 5, потом кажись дошел до трех, деревянных ... а сейчас бросил пить, если нужно какой левак по быстрому - лепит модель на 15-20 таблиц на колене и все довольны, все смеются ... что-то в этом есть ... вот и я о том же... Все эти типовые конфигурации, настройки, шаблоны и т.п. хороши в учебниках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:30 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЕсли пишут заново в изменившихся условиях, то это не значит, что в прошлый раз ошиблись. Если фирма пишет учетные системы одну за другой, и при этом каждую пишет так, что ее нельзя доработать до удовлетворения потребностей следующей - это имхо значит, что в прошлый раз ошиблись. Если же "дорабатывает раз, два и три" - в какой-то момент окажется, что очередной проект может быть выполнен без доработок движка. Можно, конечно, называть это "уже внедрением, а не новым проектом", суть от того не меняется. Я в свое время ругался с начальством именно на тему "нафиг каждый раз писать с нуля". При том, что я тогда был во многом неправ, начали двигаться в сторону универсализации. На первом-втором проекте работали много, на третьем уже больше настраивали, чем дорабатывали. Потом я ушел, о дальнейшем развитии сказать не могу. Насколько я знаю, используется-развивается до сих пор. Bogdanov AndreyСпособов реализации учета довольно много и какой из них выбрать для конкретной задачи вопрос не однозначный. Безусловно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 18:44 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
softwarerЕсли фирма пишет учетные системы одну за другой, и при этом каждую пишет так, что ее нельзя доработать до удовлетворения потребностей следующей - это имхо значит, что в прошлый раз ошиблись. Если же "дорабатывает раз, два и три" - в какой-то момент окажется, что очередной проект может быть выполнен без доработок движка. Можно, конечно, называть это "уже внедрением, а не новым проектом", суть от того не меняется. Честно скажу, что никогда не писал учетные системы "одну за другой". Больше был занят в относительно крупных (от 5-10 человеко-лет) проектах. Участвовал в написании одного учетного ядра, еще два сам проектировал. Задаче при всей схожести терминологии были настолько разные... Еще несколько раз участвовал в приспособлении имеющегося учетного ядра под новые задачи. Не всегда это получается гладко. Несмотря на то, что со своими основными обязанностями ядро справлялось на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 22:58 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Для реализации такого подхода (использовать наработки предыдущих проектов в последующих проектах), нужно программировать и проектировать с максимальной (но разумной в рамках текущего проекта) степенью абстрагирования, тогда меньше и легче переносить разработки на последующие проекты, и называется такой подход кажется универсальностью. Но и у него есть свои минусы, порой универсальность требует большего времени при первой реализации (на первой итерации жизненного цикла схемы) чем при использовании неуниверсальных принципов, но это потом окупается улучшенной масштабированностью в текущем проекте, и переносимостью в других проектах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 05:28 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЧестно скажу, что никогда не писал учетные системы "одну за другой". Больше был занят в относительно крупных (от 5-10 человеко-лет) проектах. Признаться, это мне и представляется "одну за другой". Проект в 5-10 человеко-лет - это год-полтора реального времени. Bogdanov AndreyУчаствовал в написании одного учетного ядра, еще два сам проектировал. Задаче при всей схожести терминологии были настолько разные... Хм. Признаться, мне здесь представляется уместной старая байка насчет ощупывания слона. Первые впечатления разные, но постепенно ощупанным оказывается весь слон и новые впечатления... становятся редкими. Bogdanov AndreyЕще несколько раз участвовал в приспособлении имеющегося учетного ядра под новые задачи. Не всегда это получается гладко. Разумеется. Никто не обещал, что будет просто. Особенно если наработки делались без прицела на повторное использование. Любая универсальность - это дополнительные инвестиции в первое время, на первых проектах. Ими оплачивается бОльшая надежность (в первую очередь именно надежность) и меньшие трудозатраты на следующих проектах, после того как технология наберет ход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 11:31 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
softwarer Хм. Признаться, мне здесь представляется уместной старая байка насчет ощупывания слона. Первые впечатления разные, но постепенно ощупанным оказывается весь слон и новые впечатления... становятся редкими. Я и не утверждал, что впечатления "новые", я лишь утверждал, что они "разные". И сейчас (после знакомства с разными учетными задачами) я бы эти задачи решал бы по-разному. И не стал бы пытаться делать одну универсальную модель. softwarer Bogdanov AndreyЕще несколько раз участвовал в приспособлении имеющегося учетного ядра под новые задачи. Не всегда это получается гладко. Разумеется. Никто не обещал, что будет просто. Особенно если наработки делались без прицела на повторное использование. Любая универсальность - это дополнительные инвестиции в первое время, на первых проектах. Ими оплачивается бОльшая надежность (в первую очередь именно надежность) и меньшие трудозатраты на следующих проектах, после того как технология наберет ход. Средства должны реализовывать поставленные задачи. А не представления программиста об идеальной абстрактной системе. Иначе пострадает и бюджет проекта и надежность. Если развитие системы не предполагается, то универсализация приведет лишь к увеличению сроков разработки, снижению надежности и производительности системы. Если же развитие предполагается, то универсализация должна быть именно такой, сколько надо для предполагаемого развития. Знаком с парой примеров, когда группа программистов создавала "красивый и удобный универсальный конструктор", чтобы потом системы как грибы плодить и в результате не доживала до окончания первого внедрения, так как все сроки по реализации пользовательского функционала срывались. Но им внедрения были и не важны, он же универсальную систему писали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 12:05 |
|
||
|
Кто-нибудь использует общие принципы и наработки?
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЯ и не утверждал, что впечатления "новые", я лишь утверждал, что они "разные". И сейчас (после знакомства с разными учетными задачами) я бы эти задачи решал бы по-разному. И не стал бы пытаться делать одну универсальную модель. Вы почему-то никак не можете отказаться от мысли, что "одна универсальная модель" должна быть "одной задачей, растянутой на три". В то время как вполне может оказаться, что "одна универсальная модель" состоит из этих трех задач, еще из трех других, и после этого почти любая новая ложится в уже реализованное. Да, конечно, есть "принципиальные вопросы" - скажем, упомянутый Вами выбор между проводками и полупроводками. Почему в кавычках - потому что этот выбор, пусть и является важным с точки зрения архитектуры системы, не так важен с точки зрения итогового результата; тот может быть приемлимым образом достигнут в любом случае. Bogdanov AndreyСредства должны реализовывать поставленные задачи. А не представления программиста об идеальной абстрактной системе. Знаком с парой примеров, когда группа программистов создавала "красивый и удобный универсальный конструктор", Хм. Андрей, если честно, я.... не ценю, когда без необходимости заводятся стандартные песни класса не-о-том-зато-заведомо-истинные. Bogdanov AndreyЕсли развитие системы не предполагается, то универсализация приведет лишь к увеличению сроков разработки, снижению надежности и производительности системы. Не совсем так :) "Если развитие системы не предполагается", оно приведет к увеличению сроков и удорожанию "развитой системы", когда предположения нарушатся и такая таки случится. Я довольно часто упоминаю о том, что "случаи - они разные бывают". Но одним из категорических принципов, вынесенных из опыта, является "никогда не верить начальнику, заявляющему, что нечто потребуется только один раз, после чего будет выброшено и забыто". Не бывает так. Рано или поздно, но тот же самый начальник приходит и говорит: "А помнишь....?" Bogdanov AndreyЕсли же развитие предполагается, то универсализация должна быть именно такой, сколько надо для предполагаемого развития. Вот это как раз принципиально неверно. Главный принцип универсализации можно сформулировать так: не связывай себе руки без необходимости. Компромисс ищется следующим образом: с одной стороны, "не трать заметные ресурсы на то, что сейчас не понадобится", но с другой стороны "из возможных решений выбирай то, которое не будет мешать тебе, когда потребуется развивать систему". Пытаться предугадать пути развития - дело... сомнительное. Даже в таких вроде бы проработанных вещах, как учет, трудно сказать, какие задачи встанут завтра, а какие останутся в неопределенном будущем. Bogdanov AndreyНо им внедрения были и не важны, он же универсальную систему писали... История из жизни. У моего начальства были хорошие связи в Московской Сотовой Связи, ныне SKYLINK, мы им постоянно что-то писали. И вот однажды пришла начальству в голову идея написать им очередную хорошую программу. Долго ли коротко ли, сделал я даже не пилота, а нечто вроде демки - показать, что мы можем и как примерно это будет выглядеть. Те сказали "здорово", подписали договор, пошли делать. Ситуация во время разработки сложилась довольно странная. С одной стороны, я делал проект практически в одиночку и практически единственный разбирался в задаче целиком. С другой стороны, я считался молодым-неопытным, поэтому по "важным вопросам" за мной постоянно пытались присматривать. В итоге проект был успешно сдан, но его трудоемкость заметно превысила заложенную; во время разбора полетов по этому поводу я довольно успешно доказал, что это явилось следствием ряда проектных решений, принятых в рамках "присмотра"; в наиболее выдающемся случае решение, принятое лично Главным с формулировкой "да перестань ты мне голову морочить, нет никакой разницы, делай как проще то есть как я сказал" вылилось в лишних месяц-полтора работы. Так или иначе, внедрение было успешно выполнено, начались обычные будни, в ходе которых я приставал к начальству "ну давайте продавать эту программу кому-нибудь еще, хорошая же". Начальство вяло отбивалось, по до сих пор искренне не понятным мне причинам, если быть не очень лояльным - имхо по нежеланию оторвать задницу от стула и пойти поработать, то есть продать "клиенту со стороны". Так или иначе, вскоре после этого последовала выставка, на которую мы полезли по рейтинговым соображениям. На ней ко мне подошел главный инженер NWGSM, посмотрел и сказал прямым текстом - "мне нужна эта программа". Я до сих пор не понимаю, сколько опилок должно было быть в головах у моего начальства, но они ухитрились не договориться. Почему? Потому что во время проектирования я говорил: давайте заложим "гнезда", куда сможем добавить мультиформатность. Меня посылали примерно с теми же аргументами, которые выдвигаете Вы. Теперь же, когда посмотрели, какое количество изменений придется внести, чтобы переделать под GSM программу, сделанную "сугубо под NMT" - выставили цену, превышавшую сумму в изначальном договоре на разработку. И то, что в NW их с этой ценой послали далеко и без вопросов, я вполне понимаю. Ладно, переделка переделкой. В тот момент, когда разрабатывалась эта программа, в стране было около восьмидесяти NMT-операторов, у соседей тоже сколько-то. В какой-то момент я вышел на даму, чьей специальностью была именно продажа софта. Ее вердикт был - "время упущено, но десяток продаж я вам сделаю". Мое начальство ухитрилось не договориться с ее начальством. Не знаю почему, но подозреваю, стоимость внедрения "сугубо заточенного" решения опять же сыграла свою роль. Что в итоге? В итоге, если бы правильно подойти к делу, программу можно было бы разрабатывать не только универсальной, но и хоть бесплатной - одна только техподдержка окупила бы ее за год и до сих пор приносила бы весьма и весьма нехилую чистую прибыль. А если подойти так, как подошли - "проект окупился и принес некоторую прибыль". Минус я, сваливший оттуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34278758&tid=1544747]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 526ms |

| 0 / 0 |
