• Что дает Java Spring?

    zolt85
    @zolt85
    Программист
    Spring Framework, как и любой другой уважающий себя framework, дает Вам основу, скелет, систему координат, в которой Вы (а еще важнее не только Вы, но и другие разработчики) разбираетесь и ориентируетесь. И вот используя этот скелет, можно строить приложения. В основе своей Spring Framework это про бины, управление бинами и IoC (Inversion of Control). Поверх всего этого строятся остальные модули Spring Security, Spring MVC и прочие (тысячи их!).
    Ответ написан
    Комментировать
  • Что дает Java Spring?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вся и идея spring и ему подобных в технологиях DI и IoC.
    Первая технология DI - Dependency Injection - внедрение зависимостей. Смысл следующий, пусть у нас есть класс, который зависит от другого класса, тогда контейнер автоматически найдет все зависимости и сам проинициализирует нужный класс. Пример: пусть у нас есть интерфейс "Фрукт", класс "Яблоко", интерфейс "Паразит", класс "Червяк". В класса "Яблоко" указываем в одном из методов или конструкторе зависимость от интерфейса "Паразит". Теперь положим в контейнер классы "Червяк" и "Яблоко", и попросим контейнер создать дать нам инстанс класса "Яблоко".
    Контейнер выполнит следующие действия:
    - посмотрит, что без класса, реализующего интерфейс "Паразит", он не может создать "Яблоко".
    - посмотрит на зарегистрированные классы, не реализует ли кто интерфейс "Паразит" и обнаружит класс "Червяк"
    - создаст инстанс класса "Червяк"
    - создаст инстанс класса "Яблоко" и передаст ему инстанс класса "Червяк"
    - отдаст созданный инстанс "Яблоко" нам.

    Теперь мы можем создать класс "Ева" с зависимостью от интерфейса "Фрукт", положить его в контейнер, и положить в контейнер класс "Адам" с зависимостью от "Ева" и попросить создать нам инстанс класса "Адам" :-)
    MutablePicoContainer pico = new DefaultPicoContainer();
    pico.addComponent(Fruit.class);
    pico.addComponent(Worm.class);
    pico.addComponent(Eve.class);
    pico.addComponent(Adam.class);
    .....
    Adam adam = pico.getComponent(Adam.class);


    Вторая технология IoC - Inversion of Control - контроль управления - это как раз и есть одна из реализаций принципа DI, когда внедрение зависимостей происходит через посредника - фреймворк.

    Легче всего разобраться с этим (а уж потом переходить к spring) - поработать с простыми контейнерами типа picocontainer , nanocontainer и guice.
    - picocontainer.com/introduction.html
    - https://github.com/google/guice
    Ответ написан
    Комментировать
  • Что выбрать для карьеры c# или ruby?

    @eliastro
    Если нравится руби, то его и изучай. Скорее всего потом ты все равно перейдешь на другие языки и технологии независимо от того, что ты выберешь (руби или с#). Работы на руби много, особенно учитывая соотношения кол-во вакансий и конкуренцию на рынке. Более того на руби ты легко сможешь найти работу удаленно при желании (как на западные компании, так и РФ), т.е. не ограничен рынком своего города или страны. А в C# удаленная работа скорее исключение, чем правило. Также в плане фриланса (upwork например), то руби гораздо предпочтительнее, чем C#.
    Ответ написан
    Комментировать
  • Какой алгоритм использовать для нахождения пути в здании?

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

    Это одна из старых версий, пардон за дизайн.
    5aa42b873b401999336800.png

    Если интересует, свяжись со мной vk
    Ответ написан
    Комментировать
  • Актуальные книги по android для новичков, на русском языке что можно выбрать?

    Conacry
    @Conacry
    Здравствуйте.
    Из книг могу посоветовать следующие:
    1. П. Дейтел, Х. Дейтел, А. Уолд. Android для разработчиков. 3-е издание(2016);
    2. Брайан Харди, Билл Филлипс,Крис Стюарт, Кристин Марсикано.Программирование под Android. 2-е издание (2016).

    Но у книг есть один веский недостаток - они выпускаются уже устаревшими.
    Если хотите иметь полную информацию по последним версиям Android, а также нововведениям в SDK, то официальная документация наше все - https://developer.android.com/index.html

    Также есть хороший ресурс с гайдами - https://guides.codepath.com/android
    Ответ написан
    1 комментарий
  • Дизайнер интерфейсов с нуля. С чего начать и как двигаться?

    OtshelnikFm
    @OtshelnikFm
    Обо мне расскажет yawncato.com
    Делай свой сайт, учись и пиши. Сложится лояльная аудитория, пойдут первые заказы.

    30-40 - разницы никакой. Вот хейтеров не слушай. Многие и в студенческие годы, когда башка варит, могут только болтать языком.

    Учи английский и подтягивай его. Будешь общаться на западных площадках. Но я говорю о развитии как фрилансер - т.к. реалии таковы что HR и говорить не будут - они шаблонны и отметают как только видят что возраст от 25-ти и к 30-ти вообще не смотрят джунов. Они же как роботы - мало у каких эйчаров реально мозги работают. Все думают что выпускник в 21 год это золотой теленок.
    Ответ написан
    Комментировать
  • Как легко перейти с jQuery на VUE?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Конкретно здесь проще, и я бы даже сказал, нужно сделать страницу на jquery =))

    ------------------------

    Если же вас интересует как в принципе заменить jquery на vue, то постараюсь ответить.

    1. Как и в случае jquery, ищем подключаем подходящий пакет. Например этот.

    2. Аккордеон реализуется вручную парой строчек

    <div>
      <h2 @click="toggle"></h2>
      <div v-if="stateOpen">
        Скрытое содержимое
      </div>
    </div>

    {
      data() {
        return {
          stateOpen: false,
        }
      },
      methods: {
        toggle(){
          this.stateOpen = !this.stateOpen;
        }
      }
    }

    Анимации раскрытия по вкусу, с помощью обёртки transition

    3. Аналогично предыдущему пункту. 10 минут на реализацию.
    4. Аналогично первому пункту.
    5. Аналогично первому пункту.
    6. Блин, ну тут то же самое =)) Мне нравится этот пакет: vue-form

    Вот и всё. jQuery можно не подключать.
    Ответ написан
    2 комментария
  • Как сделать CGI-программу на С#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    у меня смутное подозрение, что вы пытаетесь все усложнить...

    1 - CGI - три буквы, которые можно вспоминать, только когда на сервер уже отправлен какой то запрос

    2 - все таинство, как возникает запрос к серверу, при заполнении формы, происходит на клиентской стороне, в браузере, ключевые слова - html, js, фронтэнд фреймфорки (а их сейчас как собак не резаных).. но C# туда впихнуть пока не реально.. есть кросскомпиляторы, но это не отменяет необходимости хорошего понимания, всего что происходит в браузере.. возможно, в будущем, будет и кросскомплер в webassembly

    3 - после того как разберетесь с фронтэндом, CGI можно писать на любом языке.. но если вы опираетесь на стек .NET - попробуйте хотя бы, для начала, осилить asp.net webforms.. потом asp.net mvc (там очень, очень много всего уже решено для вашего удобства.. а вы типа в каменный век хотите)

    ps

    если с фронэндом вы справитесь - CGI на C# - это просто консольное приложение, а вот как его цеплять в IIS/Apache.. как парсить ввод, как генерить html-ный вывод... все таки - попробуйте asp.net

    pps

    стандартный ввод это Console.ReadLine(), стандартный вывод - Console.WriteLine() - вот вам все что делает приложение пригодным к CGI... все остальное надо понимать в голове и кодить ручками
    Ответ написан
    Комментировать
  • Javascript фреймворки - дань моде или быстрота и удобство?

    @devunion
    И я вставлю 5 копеек о пользе Vue. Несколько лет назад начинал изучать Angular. Пришел к выводу, что есть идеи интересные, но как-то все сделано через одно место. Плюнул. Продолжал использовать jQuery (надеюсь, что необходимость использования jQuery или подобных библиотек вопросов не вызывает. Оптимизировать производительность можно долго и эффективно уже потом, когда это реально понадобится. В большинстве случаев до оптимизации дело вообще не доходит). Потом посмотрел Vue. Понравилось. Стал использовать в различных проектах. Раньше начинал делать простые проекты на jQuery т.к. необходимости тащить фреймворк вроде бы как и нет. В дальнейшем оказывалось, что при развитии проекта jQuery уже не удовлетворял всем потребностям. Переписывал на Vue. Наверное, в будущем буду сразу все писать на Vue и не заморачиваться.

    Вывод: попробуйте, не пожалеете!
    Ответ написан
    Комментировать
  • Хочу заняться программированием под андроид, но Java знаю чуть больше основ, можно ли изучать Java по ходу изучения андроида?

    @drLemmi
    Согласен с предыдущим ответом. Вы можете учить Java по ходу программирования под Android, но это будет сложнее, так как Android SDK очень большая штука с кучей инструментов, что при знаниях Java "чуть больше основ" будет во многих местах непонятным для Вас. По времени Вы ничего не потеряете, но из-за очень большого количества непонятных вещей можете быстро перегореть и бросить это дело. Я бы посоветовал Вам сначала подтянуть знания Java Core и в принципе основы программирования и ООП, а потом заниматься Android SDK. Так Ваш вход в мир программирования под Android будет более плавным.
    Ответ написан
    1 комментарий
  • Какие инструменты для разработки мобильного приложения на базе веб-технологий сейчас есть?

    zo0m
    @zo0m
    full stack developer
    Последние года 3 пользуюсь Appcelerator Titanium.
    https://github.com/appcelerator/titanium_mobile

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

    Чем он хорош?

    Как и React Native и Xamarin он предоставляет возможность создания _нативных_ приложений, управляемых JavaScript, в отличии от Cordova/Phonegap.

    Другой момент, в отличии от конкурентов в Appcelerator появилась возможность писать на JavaScript _нативный код_ ! который при помощи специального транслятора (Hyperloop) превращается в Java / Obj. C
    Эта штука позволяет напрямую дергать нативное окружение, минуя бридж между виртуальной машиной V8 и системой, а так же использовать любые нативные фреймворки внутри вашего приложения.
    https://www.appcelerator.com/mobile-app-developmen...

    Есть MVC фреймворк Alloy:
    docs.appcelerator.com/platform/latest/#!/guide/All...

    Менеджер модулей:
    gitt.io

    Так же из коробки есть облачко, если не хочется писать сервер (я пользуюсь им, как бекапом):
    docs.appcelerator.com/platform/latest/#!/guide/Mob...

    Есть так же аналитика, бесплатный вариант порезанный, но мне хватает.

    Добавлю:
    Для моделей используется надстройка над Backbone:
    docs.appcelerator.com/platform/latest/#!/guide/All...
    Которая умеет синкаться с SQLite

    Так же пользуюсь модифицированным app.tss из https://github.com/TNuzzi/wriststrap
    (https://github.com/TNuzzi/wriststrap/blob/master/t...
    плюс Jade/Pug (можно через Grunt в XML перегонять, но я пользуюсь Jade Watcher в WebStorm) и получаются симпатичные на мой вкус шаблоны:
    Alloy
        ScrollView.w-fill.h-fill.lo-v(right=10, left=10).st-vertical  // lo-v == (layout='vertical'), w-fill == (width="FILL")
            Label#eventName.event-name.l-0
    
            View.lo-c(top=10)
                ImageView#photo.event-info-photo(onLoad="photoLoad")
                View.event-info-date-time
                    Label#date.event-info-date-time-label.event-info-date
                    Label#type.event-info-date-time-label.event-info-type
                Label#price.event-info-price
    
            Require#details(src='event/card/event_card_details')
            View.bottom-spacer


    Если хочется просто запустить локальный сайт, аля Phonegap, просто кидаем в шаблоне WebView компонент:
    docs.appcelerator.com/platform/latest/#!/api/Titan...
    растягиваем по экрану: width="Ti.UI.FILL", height="Ti.UI.FILL"
    в папку с assets добавляем папку с продакшн билдом вашего веб-проекта, и в WebView проставляем ссылку.
    Получится та же Cordova, только с уровнем доступа выше, вы через EventListener-ы получите доступ к любым нативным функциям, без сторонних плагинов.

    И напоследок канал в Слэк:
    https://ti-slack.slack.com
    Ответ написан
    3 комментария
  • Какие инструменты для разработки мобильного приложения на базе веб-технологий сейчас есть?

    @Simipa
    React Native developer
    Наиболее стабильный и мощный инструмент, особенно под iOS - React Native. С помощью Expo проекты можно писать вообще без нативного кода, исключительно на js. Я уже год работаю на RN, писал как мелкие проекты, так и очень большие - меня все устраивает.
    Ответ написан
    1 комментарий
  • Какие инструменты для разработки мобильного приложения на базе веб-технологий сейчас есть?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Есть несколько вариантов.

    js-to-native, нативное приложение с бизнес-логикой на js и нативными виджетами:
    • react-native
    • NativeScript — на выбор angular, с недавних пор vue, чистый js
    • weex — аналог react-native для vue.js, из коробки так же работает под веб. С документацией пока грустновато, но народ работает.

    Вроде как из этого react-native самый проработанный и стабильный. Имел дело только с ним, если это стабильно и проработанно, то в остальное даже страшно заглядывать (хотя NativeScript+ionic мне хвалили). Выглядит нативно на каждой платформе. Знания html и css по большей части не пригодятся: тэги/компоненты свои, css-свойства работают не все и не во всех сочетаниях.

    webview, гибридное приложение, браузер на весь экран:
    • cordova, старейшее живое решение

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

    прочее:
    • *.webmanifest и PWA, нечто среднее между установкой приложения и добавлением сайта в закладки.

    По идее идеал, часто юзаешь сайт — типа ставишь приложение, редко — открываешь из браузера. У разработчика голова не болит как подружить веб, iOS и Android: везде выглядит и работает одинаково. На практике поддержка пока что пятнистая.
    Ответ написан
    5 комментариев
  • Какой php фреймворк можно понять / разобрать полностью?

    @nozzy
    Symfony, Laravel, SQL
    Рекомендую начать с Silex, использует компоненты Symfony, очень простой для понимания.
    Будешь понимать как работает Symfony, Laravel и тд.
    Ответ написан
    Комментировать
  • Какой php фреймворк можно понять / разобрать полностью?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Прямо для вас, не пропустите...!

    PRS-7 фреймворк
    В серии видео полностью разбирается создание фреймворка,
    такого «универсала» по современым стандартам, последняя серия будет изо дня в день, все с тестами и плавно из одного решения в другое, смотреть на скорости 1.25


    Кишки фрейма:
    1. HTTP Response/Request PSR-7 (и компоненты для работы с ним)
    2. Построение контроллеров и роутинга (с переходом на Aura Router)
    3. Middlewear и Pipeline (а-ля Laravel, Slim, Symfony)
    4. DI контейнер (все фреймворки)
    5. Шаблонизаторы (+ пример на Twig из Symfony)
    6. ORM не точно
    Ответ написан
    8 комментариев
  • Есть ли практическая польза от книги sicp?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    SICP учит думать по-программерски. Учит находить решения в программерском мире. Есть огромная разница между программистом знающим как использовать фреймворк1, фреймворк2, ..., фреймворкN и другим программистом, который может даже и не знать как использовать эти фреймворки, но сможет отличить что вон тот код очень похож на работу за O(n) , а вон тот вроде как за O(1) и сможет сделать более правильный выбор. Грубо говоря есть некий базис, который одному позволяет создавать решения более стабильные, более эффективные, а другому из-за не хватки приходится городить костыли.

    К примеру общеизвестная задачка на программирование "банерокрутилка". Когда имеется банер1, банер2, ..., банерN и нужно вывести "псевдослучайно" каждый банер по одному разу. Один программер может применить массив и указвать в нем какие номера он уже выводил, а другой применит математику и при этом решение будет одно проходным и не потребует выделения массива. И таких задачек в программировании хватает!
    Ответ написан
    4 комментария
  • Разработка под Android на C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    если вы отлично знаете C# + отлично знаете Xamarin = это очень весомый аргумент

    но если планируете начать... - в java вы будете собирать грабли java и android... а в xamarin ++ грабли xamarin

    ps

    Unity сам по себе, и сам в себе C#

    вы уж определитесь сами... есть люди пишущие на многих языках.. можно оба языка осваивать, можно и один. но в любом случае, разработка для андроида - это кросс-разработка. легко не будет. и как всегда, что бы начать - надо начать
    Ответ написан
    3 комментария
  • Разработка под Android на C#?

    LemonRX
    @LemonRX
    Начинающий Android разработчик
    Если вы конкретно хотите разрабатывать приложения а не игры, то все же рекомендую сделать выбор в сторону java или kotlin по следующим причинам:
    1) java является родным языком для андроид
    2) примеры, уроки все на java
    3) в целом сообщество использует java
    4) студия заточена под java

    Если вы хотите разрабатывать игры на юнити то у вас нет выбора между java и c# так как юнити не поддерживает java
    Ответ написан
    Комментировать
  • Изучения Java на примере Android приложений?

    zolt85
    @zolt85
    Программист
    Так себе идея изучать Java через Android. Android использует Java исключительно как фронт, синтаксис, понятный разработчику. Но JVM там своя. Принцип "написано однажды, запускается везде" из-за этого не соблюдается. Вы не можете запустить приложение, написанное с использованием Android SDK запустить где-либо еще, кроме Android OS. Java как язык довольно банален и скучен. Изучать Java просто как язык, тоже скучно. Нужно сразу врубаться в инфраструктуру. Какой-то одной книги наверное нет. На сайте Oracle довольно подробные есть туториалы по реализации того или иного функционала. На Вашем месте (а когда-то я там был) я бы взял уже готовые наработки (что-то же Вы реализовали на PHP, JS) и попробовал бы воспроизвести их на Java. Если это web - берите Spring Framework с его Spring MVC (благо туториалов по нему оооочень много), если хотите desktop - берите JavaFX (тут инфы не так много, но можно найти). И тут я пришел к тому, что Вы, возможно, хотите mobile ... Тогда да, берем Android и погнали ... Но основная мысль в том, что учить Java не сама цель, целью должно быть изучение инфраструктуры и инструментов для построения ПО на 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
    Ответ написан
    Комментировать