• В чем недостатки Java для веб-разработки?

    Foror
    @Foror
    Графоман
    Хороших фреймворков для веба маловато, а так вполне можно пилить и на java, рекомендую глянуть tapestry5.4, лучшего веб-фреймворка для java пока не видел.
    Ответ написан
  • Какие инструменты выбрать для создания web-приложения на java?

    Foror
    @Foror
    Графоман
    С GWT намучаетесь, да и гугл на него уже как забил, сделав GWT 2.0 - Dart, у которого также сомнительное будущее. В Wicket - кривая реализация, сделано рукожопами, в сессию юзера пихают, что попало, хотя как сейчас у них не в курсе.

    Tapestry более-менее, вот-вот даже выйдет новая версия, в которой Prototype.js заменили на JQuery. А также Bootstrap из коробки по дефолту jumpstart.doublenegative.com.au/jumpstart7 Еще один плюс это изменение классов/шаблонов и отображение результата без перезагрузки контейнера. Хотя конечно не всё так гладко и через какоё-то время контейнер тупо закрешится и нужно поднимать его заново.

    Но проблема в том, что фреймворк постоянно изменяется и переход на новые версии может быть проблемным. Например, в 5.3. Prototype.js, а в 5.4 все дефолтные компоненты на JQuery и Bootstrap. Из 5.2 в 5.3 полностью переделали URLRewrite сервис, сделали хуже, чем было. Но с другой стороны плюс в том, что фреймворк очень гибок и если не нравится новый URLRewrite, можно сделать override через IoC и вернуть старый.

    Использовать Tapestry 5 + Spring особого смысла нет, в Tapestry 5 собственный IoC и модуль для Hibernate. А если поискать на гитхабе можно найти и другие модули. Но в целом, руками придется многое пилить самому. По формам есть дефолтный компонент, генерирующий форму автоматом из модели, но он конечно слабоват, для сложных форм может и не хватить.

    Я сейчас тоже планирую делать веб-приложение и склоняюсь к Angular.js Т.к. хочу полный аджакс, чтобы юзер вообще не видел переходов на другие страницы. Отчасти из-за того, что он напоминает Tapestry 5. А вот на сервер-сайде, думаю просто использовать какой-нибудь простенький контроллер (Undertow, например) и какой-нибудь фреймворк JSON-POJO + может подключу IoC из Tapestry 5. Или попробую разобраться в Spring, в последних версиях все можно конфигурить через аннотации, но тут тоже надо смотреть, что он мне даст, может также все нужно будет пилить руками, а в этом случае Tapestry IoC выглядит проще.

    По формам можно использовать, что-нибудь такого плана https://github.com/dobtco/formbuilder А вообще, можно на гитхабе поискать что-нибудь на angular form, может что есть kelp404.github.io/angular-form-builder
    Ответ написан
    Комментировать
  • Какой есть бесплатный\недорогой движок для рисованного квеста?

    Foror
    @Foror
    Графоман
    А под какую платформу: PC, Android, iOS? Можете дать ссылку на пример графики в данном квесте?
    Ответ написан
    Комментировать
  • Какой фреймворк более актуален на сегодняшний день - Play!, Struts или Spring?

    Foror
    @Foror
    Графоман
    tapestry 5
    Ответ написан
    Комментировать
  • Где искать людей в команду развлекательного сайта?

    Foror
    @Foror
    Графоман
    Какого плана проекты делаете, можно ссылки? Я сейчас думаю сделать проект в дотком на подобную тему, тоже ищу людей в команду. Мой скайп fororer.
    Ответ написан
    Комментировать
  • Как настроить mysql в debian для высокой нагрузки?

    Foror
    @Foror
    Графоман
    Гуглите mysql ulimit например duntuk.com/how-raise-ulimit-open-files-and-mysql-o...

    Плюс посмотрите по каким урлам идет 502 ошибка, если есть какой-то общий шаблон, то просто добавить лог в сырцы обрабатывающие данный урл, и выяснить, что подвисает из логов.
    Ответ написан
    Комментировать
  • PHP и Linux: в чем плюсы?

    Foror
    @Foror
    Графоман
    Если сервер, будет на linux, то разрабатывать из под винды плохая идея, потом лишняя возня при развертывании и запуске на сервере - тупо не запустится с первого раза, полезут всякие мелочи. Плюс на linux пхп крутился шустрее (в разы), как сейчас дела обстоят не в курсе.
    Ответ написан
    Комментировать
  • Какие есть способы обучения объектно ориентированному програмированию?

    Foror
    @Foror
    Графоман
    В догонку - Архитектура корпоративных систем, Фаулера
    Ответ написан
    Комментировать
  • Какие есть способы обучения объектно ориентированному програмированию?

    Foror
    @Foror
    Графоман
    Объектно-ориентированный анализ и проектирование с примерами приложений Гради Буч rutracker.org/forum/viewtopic.php?t=3343958
    Ответ написан
  • В чем суть интерфейсов в программировании?

    Foror
    @Foror
    Графоман
    Для начала нужно сразу понять, что интерфейс это частный случай класса. Но в Java оно имеет отдельное ключевое слово, а в C++ это просто класс без реализации. Поэтому интерфейс просто задает некий стандарт для работы с кучей разнообразных реализаций.

    Например, интерфейс Iterable говорит, что классы реализующие данный интерфейс имеют элементы и их можно перебирать в цикле вызывая метод next(). А значит, если создаете какой-то контейнер или коллекцию, то можно реализовать Iterable. Не выдумывая свои методы для работы с контейнером. Тем самым появляется некий общий стандарт - интерфейс для работы с контейнерами.

    А если вы делаете игру, то можете создать интерфейс Unit, тем самым задав классам определенное поведение. Например, unit должен обязательно иметь метод atack(), isDead() и т.д.

    А дальше, в цикле делаете проверку всех юнитов:
    loop(...) {
    if (unit.isDead())
    removeFromMap(unit);
    }

    Ну и конечно Unit может быть и просто классом или абстрактным классом, в котором реализованы atack и isDead, а может быть только isDead, потому что attack у каждого типа юнита индивидуально и требует собственной реализации. Т.е. приходим к тому, что интерфейс это также частный случай абстрактного класса.

    Т.е. тут уже вступает в действие полиформизм, т.е. интерфейсы по сути дают полиформизм. Ну, а в Java они еще позволяют делать множественное наследование или другими словами задать классу несколько свойств поведения, например Unit может быть также и Iterable, тем самым можно дать юнитам инвентарь и перебирать элементы в нем.

    И соответсвенно если Unit у вас будет классом или абстрактным классом, то унаследовав Unit в Java, вы просто не сможете дать наследнику еще и Iterable поведение, если Iterable будет тоже классом.

    OrcWarrior implements Unit, Iterable - так можно

    OrcWarrior extends Unit, Iterable - так в Java нельзя, но можно в С++, а Unit и Iterable тогда всегда будут объявляться как class...

    Из-за этого, в Java приветствуется не наследование, а композиция. Т.е. нафига каждый раз реализовывать Unit.isDead, если он стандартный? Поэтому, создается скажем класс UnitAI и делается следующее:

    class OrcWarrior implements Unit, Iterable {
    UnitAI ai;

    UnitAI getAI(){
    return ai;
    }
    }

    class UnitAI {

    boolean isDead() {
    ....
    }
    }

    interface Unit {
    void attack();
    UnitAI getAI();
    }

    Вот это называется композиция, т.е. в OrcWarrior, HumanWarrior вы подмешиваете UnitAI, в котором уже реализовано isDead, и тем самым не нужно каждый раз его реализовывать одним и тем же кодом. В С++ такого можно не делать, там есть поддержка множественного наследование, но оно имеет свои минусы. Впрочем, как и композиция имеет плюсы/минусы.
    Ответ написан
    Комментировать
  • Как продвигать интересный проект с хорошим контентом?

    Foror
    @Foror
    Графоман
    Занимались поиском ключевых слов для продвижения в гугле, яндексе? Если нет, обращайтесь в скайп fororer или на gmail с таким же ником, могу дать пару советов, а может и больше.
    Ответ написан
    Комментировать
  • Стоит ли начать изучать язык программирования Go?

    Foror
    @Foror
    Графоман
    Синтаксис конечно интересный, но такое ощущение, что Google обиделся, что Java прикупил Oracle и вместо фреймворка для Java выпустил целый язык программирования.

    Вот, например, Go умеет Inter-Thread без блокировок? А Java умеет www.infoq.com/articles/High-Performance-Java-Inter... и есть либы https://github.com/LMAX-Exchange/disruptor базирующиеся на этом принципе. И судя по сему они уделают goroutines по перформансу https://code.google.com/p/disruptor/wiki/Performan...

    Так что, Go, это попытка Google запилить свою Java с блекджеком и шлюхами :) Может, что и выгорит, а может и нет.
    Ответ написан
    Комментировать
  • Пару слов о моем коде Java

    Foror
    @Foror
    Графоман
    Все close() методы - хорошая практика добавить это в try {юзаем inout ресурсы} finally {close()}, тем самым будет гарантироваться, что ресурсы закроются

    pklServer() - должен зарефакторен в конструктор Client, иначе этот криво и небезопасно, ну или назвать это connect() и проверять, что если сокет уже законектен, то кидать exception

    System.exit(0); - так обычно не делается (это очень криво вот так взять и резко завершить всю систему в банальном методе), лучше бросить исключение, что-нить типа FileNotFoundException (такой класс даже есть наверно в стандр либе), а тот кто его будет ловить решит - красиво обработать данный эксепшен или тупо бросить на консоль стектрейс без обработки
    Ответ написан
  • О проекте Google Dart

    Foror
    @Foror
    Графоман
    Подумал тут, что Dart можно закапывать сразу же как только ES6 будет доступен для разработки и появится поддержка ASM.JS в IE и Chrome.

    И тут 100%, что это произойдет в ближайшие год-два, а то и раньше. ASM.JS запилят 100% т.к. иначе остальные браузеры будут тормозами по сравнению с Firefox и для реализации нужно лишь допилить JS движок браузера. Ну а ES6 это само собой разумеющийся факт.
    Ответ написан
    Комментировать
  • О проекте Google Dart

    Foror
    @Foror
    Графоман
    Думаю перспектив нет, почти готова спецификация ES6, а в ней решены основные проблемы JS (классы и модули). Фактически Dart это GWT 2.0 по трансляции Java в JS, по сути костыль, который уже мало кто юзает.

    Dart не будет поддержан мелкомягкими, а как-никак это огромная доля пользователей. В Firefox тоже не намечается поддержка, они там делают ставку на asm.js, так что... Вышел бы он, в году, эдак 2008, шансы может и были, а сейчас поезд ушел.
    Ответ написан
    Комментировать
  • Один сайт несколько серверов?

    Foror
    @Foror
    Графоман
    >Загрузка и закачка
    Это одно и тоже, как говорил Мюллер :)

    Гуглите в сторону Hadoop, как пример
    Ответ написан
    Комментировать
  • Как построить архитектуру частного облака?

    Foror
    @Foror
    Графоман
    >Дано 3 сервера + 2 веб-разработчика. Необходимо из данных ресурсов сделать частное облако
    А 2-х разработчиков вы тоже будете использовать для распределения нагрузки, подключите их мозги в кластер по ethernet? :)

    Если без юмора, то у вас каша в голове и нет понимания, что такое облако. Для начала сформулируйте правильно вашу задачу и вопрос.
    Ответ написан
    2 комментария
  • Существуют ли системы оперирования информацией об объектах и связях?

    Foror
    @Foror
    Графоман
    На github попробуйте поискать, вам скорее нужен какой-то редактор графов, с возможностью иморта данных и операций над ними. Такая штука определенно должна быть, я даже помнится, что-то подобное видел, но щас не вспомню где.
    Ответ написан
    Комментировать
  • Почему востребован Java?

    Foror
    @Foror
    Графоман
    >причина популярности Java
    Как-то так:

    - простой синтаксис, без лишних сложностей - я лет 8 на С++ не програмил, но в последнее время, бывает гляну на С++ код и просто тихий ужас :) А альтернатив С++ просто нет, только Java. Нет, конечно есть всякие Rust, D, но это пока для гиков поиграться.

    - удобная организация библиотек и качественные инструменты для управления зависимостями (остальные только-только начинают догонять) => без головняков собирать большие проекты и подключать сторонние либы

    - проработанная и шустрая многопоточность, в том числе так называемые goroutine, особенно в последних версиях (7-8)

    - JVM, на которой можно легко програмить на Scala, Groovy, Python, Ruby, JavaScript, Kotlin, Ceylon и т.д. и т.п. Если не нравится синтаксис Java. При этом то, что запрограмил на Python будет доступно из Java, и наоборот. Это очень круто. Но все еще высок порог входа, чтобы управлять всем этим хозяйством. Я вот, как раз пилю кое-что в данном направлении, чтобы обрушить этот порог :)

    - Android

    - (Инди) игры (Minecraft, Delver, Lineage - тысячи их)

    На десктопах Java нет, лишь из-за C# и Windows, а так посмотрите InteliJ IDEA 13 это пример насколько может быть сексуальным десктопный интерфейс на Java.

    И еще, те кто пытался писать на Ruby, затем переделывали на Java/Scala, т.к. 1 сервер на Java, проще, чем 10 серверов на Ruby при той же нагрузке.

    >скорость выполнения программ крайне низкая
    Это миф, тянущийся из бородатых 90-х. Современные HTTP серверы построенные на Java по производительности на уровне C/C++ реализаций. Но памяти конечно жрут больше, но это отдельная тема и в наше время это не такая уж и проблема.
    Ответ написан
    1 комментарий
  • Выбор ноутбука i7

    Foror
    @Foror
    Графоман
    А я вот думаю потерпеть и взять, что-нибудь на новых AMD APU, чтобы не брать с дискреткой и получить холодный и тихий ноут, умеющий тяжелые игры.
    Ответ написан