Задать вопрос
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Что не так в моем коде, и как подтянуть навыки?

    @onepavel
    Консультация и разработка мобильных приложений
    Тебе все правильно написали.
    Мой тебе совет лезть в гитхаб, качать оттуда проекты и смотреть их механику.
    Прежде чем лабать код смотрим на исходные данные.
    У тебя это json, открываем и смотрим.
    Мы видим массив одинаковых объектов. Для нашего удобства
    сообразим класс под json'овские данные
    class Product {
    int id;
    String name;
    String picture;
    String description;
    }

    Теперь нам нужно в активити их распарсить в список.
    У тебя есть объект с методом
    new JSONReadFromAsset().readJsonFromAsset(getApplicationContext());

    который возвращает json массив, а если заказчик завтра даст два таких файла !?
    мы же не хотим копипастить, а сделаем универсально и метод парсера будет возвращать сразу массив объектов, а не json данные и тогда мы выкинем лишние сущности
    ArrayList<String> nameList = new ArrayList<String>();
    ArrayList<Integer> idList = new ArrayList<Integer>();

    а вставим только один список
    List<Product> mDataList
    и тогда мы будем получать данные
    mDataList = JSONReadFromAsset.readJsonFromAsset(getApplicationContext(),"questions.json");

    Сделаем readJsonFromAsset статиком, так как JSONReadFromAsset ничего в себе не несет.
    в readJsonFromAsset должно быть что-то, вроде, такого
    readJsonFromAsset() {
    List<Product> dataList = new LinkedList();
    for () {
    Product product = new Product();
    obj = jsonArray.getJSONObject(position);
    product.id = obj.getInt("id");
    product.name = obj.getString("name");
    product.description = obj.getString("description");
    product.picture = obj.getString("picture");
    dataList.add(product);
    }
    return dataList; 
    }

    вместо методов getString, getInt я предпочитаю использовать optString, optInt
    Вариантов парсинга данных много, можно изворачиваться по разному.
    А что бы показать что ты крут, можно сделать класс Product Parcelable
    и не передавать пачку строк через бандл в интенте, а передать сразу Product объект.
    bundle.putParcelable(SomeActivity.PRODUCT, mDataList.get(position));

    В другом активити принять и с ним работать.

    Можно вот так сделать
    public static final String LINK = "ironwaterstudio.com";
    и поместить в легко доступное место или завести отдельный класс
    class Static {
    public static final String LINK =  "http://ironwaterstudio.com";
    }

    AlertDialog - насколько тебе необходимо обрабатывать setNegativeButton, попробуй не передавать обработчик кнопки, а сунуть null
    Ответ написан
    3 комментария
  • Как создать мобильное приложение Android для интернет сайта?

    @cloud-habr
    хорошее Api сайта на пример вконтакта описание
    т.е другими словами это то что ответит сайт на get запрос типа yousite.com?userid=1&token=jrhbmgjhgbbnmmhkik5l&im=all - вывод всех сообщений
    план проекта прост чего нельзя сказать о реализации
    1. создаёте сайт с чатом и апи
    2. в Activity приложения делайте запрос
    3. в Activity обрабатываете ответ

    вся основная работа уйдет на безопасность сайта и приложения , к примеру на авторизация пользователя ...
    Ответ написан
    1 комментарий
  • Как создать мобильное приложение Android для интернет сайта?

    aratj
    @aratj
    программер.
    1. почитать про асинхронную работу с сетями..
    2. узнать как работать с post/get запросами
    3. научится работать с парсерами, особенно если нет API придется парсить html
    их много, но я люблю jsoup из-за возможности работать с селекторами. по аналогии с jquery (javaScript) можешь гуглить.
    4. почитать про json/xml (если есть API , чаще используют json)

    5. Научится работать нормально со списками. List, ListArray итд.
    6. Научится работать с кастомными адаптерами.
    Ответ написан
    1 комментарий
  • Каков план личностного развития JavaScript программиста с нуля?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Выучить русский язык. Узнать, что такое "личностное развитие" и чем оно отличается от профессионального.
    Ответ написан
    2 комментария
  • Под что легче программировать: под IOS или под Android?

    Collosteam
    @Collosteam
    Android кодирую
    Все зависит от того какой язык програмирования вам ближе.
    Objective-C очень хороший язык, после Java, конечно, было неожиданностью увидеть его синтаксис, но как оказалося, все очень просто и интуитивно. За пару месяце можно освоить, до уровня написания кода без книжки. Под Android, на моих курсах менеджеры, через полтора месяца пишут клиент к своему блогу.
    Что касается разработки под Android и iOS, то впринципе уровень сложности примерно одинаковый, благодаря xCode разработка под iOS весьма увлекательное занятие, для Android прийдется поплясать с Studio.
    Единственный минус iOS необходимость на этапе обучения Мака, что не всегда по карману.
    Ответ написан
    Комментировать
  • Возможна ли разработка android приложений на Mac OS?

    risik
    @risik
    Программист
    Под Андроид можно разрабатывать на чем угодно. OS X для этого вполне подходит.

    Сам сижу на OS X но у меня мало разработки под Андроид. В основном iOS.
    Потенциальные подводные камни:
    - имейте в виду, что OS X это BSD, а не GNU. Если в процессе сборки используете bash/sed/awk могут быть отличия.
    - если активно используете эмулятор, на OS X не забудьте установить HAXM иначе эмулятор Вас неприятно удивит тормознутостью по сравнению с KVM based на linux.

    Note: Eclipse не рекомендую. Лучше IntelliJ IDEA / Android Studio

    update: погуглите про установку Java на OS X. ее там изначально нет.
    Ответ написан
    1 комментарий
  • Что будет, если воровать контент с сайтов в массовом количестве?

    Trow_eu
    @Trow_eu
    Вы будете плохо спать, нервно оглядываться, наберете вес от стресса и тп.
    Посмотрите на депутатов, они богатеют на воровстве, но выглядят жалко.
    Совесть еще можно забить, но с кармой не договоришься.
    Ответ написан
    Комментировать
  • Стоит ли учить Swift Obj-c developer'y?

    @Philippov
    Мне кажется, obj-c разработчик не станет задавать таких вопросов.
    Ответ написан
    Комментировать
  • Что лучше выбрать: android разработка или веб-программирование?

    Bringoff
    @Bringoff
    Android dev at Freelance
    Где-то полгода назад мучался... В итоге после 2-х месяцев мучений выбрал мобильную разработку.
    Просто попробуйте. Пожалуй в порядке: фронтенд, мобильная разработка, бэкенд. Если что-то по ходу зацепит - тормозите на нем и углубитесь. Если не отвернет - профит.
    Ответ написан
    Комментировать
  • Есть сервис для того, чтобы научиться бегло понимать английскую речь?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Внесу небольшую лепту, хотя вижу что вроде решено.

    Во-первых, всё приходится через труд. Люди разные, техники разные, у кого то есть способности к языкам, кто-то родной едва понимает. Тут дело такое, может просто не сильно повезло.

    Но терпение и труд всё перетрут. Так что вот пара трюков и советов:
    + во-первых, нужна базовая грамматик; с ней можно познакомиться из банальных учебников, или же на таких сервисах, как liangualeo.ru (правда придётся заплатить, дабы открылись курсы); в принципе это самый сложный момент, хоть и не совсем обязательный: сложный тем, что правил туча, совсем другой язык, скорее непохожий на наш, чем сходный в чём-то, но необязательный он тем, что людям свойственно ошибаться и никто вас не съест за "моя твоя не понимать". Конечно, я утрирую, в простом общении (особенно в холиварах и если Вы кому-то просто не понравились) за ошибки могут и наказать привлечением внимания общественности, но на спец. форумах по обучению языкам Вам просто вежливо растолкуют;
    + во-вторых, нужен словарный запас; по замерам, для свободного чтения хватает 3k слов с лихвой, для чтения технической литературы нужно слов чуть больше, в зависимости от сферы сверху от 500 до 2k слов, но 5k это не так много, особенно если учесть, что большинство слов похожи и имеются простые алгоритмы построения одних частей из других (хоть это и нельзя использовать прост так, если вы не писали "Гамлета", но для запоминания - не можно, а нужно); для этого нужно много читать, чтение невероятно быстро повышает словарный запас, но читать надо по возможности без словарика: развивает "языковую догадку", когда из контекста догадываетесь до смысла неизвестного слова, что намного лучше, ибо Вы начинаете думать на ин. языке, нет бессмысленной высокоуровневой прослойки.
    + в-третьих, надо много слушать; без этого Вы просто не будете понимать устную речь. Сам этим страдаю - спокойно читаю технический текст, но никак не могу слушать живого собеседника, говорящего свободно, пока что приходится просить помедленнее; здесь Вам помогут фильмы, аудиокниги, первые желательно без субтитров ибо иначе будете читать субтитры, а не слушать; тяжело, но зато быстро научитесь слушать (примерно пара недель интенсива).
    + предпоследний, четвёртый этап: общение - второй по тяжёлости, здесь надо будет снять языковой барьер полностью, научиться думать и говорить на другом языке, а это не просто; говорить надо часто, чем чаще тем лучше, причём длительные перерывы этому ни разу не способствуют. Месяца интенсива хватит, но продолжать придётся, чтобы не потерять навык. Skype творит чудеса, правда Вам придётся тогда поучить русскому языку.

    Наконец, последний этап, сто раз по желанию: переводы. Это последний этап изучения языка, и это всё бред и ужас, что твориться в школах в СНГ (где учат языку через постоянные переводы). При это придётся научиться в совершенстве не только изучаемый язык, но и знать, понимать и любить переводимый (совершенство здесь не обязательно, редактор или другой человек если что может поправить, но исказить мысль - недопустимо). Собственно, здесь помощников нет: сколько людей, столько и мнений. Разве только выкладывать переводы на habrahabr.ru, хоть и нынешняя публика не очень относиться к переводам. В принципе, если очень хорошо знаете свой язык (я допускаю, что он русский), можете переводить и в обратную сторону, заодно познакомив зарубежного обывателя с материалами хабры =)

    Удачи в этом не лёгком деле. Как я говорил, без труда ничего не получиться. В крайнем случае, можете просто "пытаться" пользоваться иностранным по мере надобности, он сам будет прокачиваться, а Вам придётся пользоваться другими людьми и справочниками довольно долгое время. Но самое печальное: levelup будет столь незаметный, что Вы сами не поймёте на каком уровне Вы владеете языком, тогда как языковые тесты имеют колоссальную погрешность и ориентированы на знание грамматики и умения переводить (что печально), но иначе измерить уровень владения языка очень трудно.

    UPD.
    К превеликому сожалению toster до сих пор не позволяет отправлять более чем 10 тыс символов, так что тем, кто захочет посмотреть некоторые интересные наблюдения придётся кликнуть на эту ссылку. (что ещё забавнее - toster обрезает длинные ссылки, вот негодяй!)
    Ответ написан
    6 комментариев
  • Как составить запрос SQL?

    Опираясь на картинку - Вам необходимо сформировать многомерный массив, готовый к выводу:
    $output = array(
      'FLUENCE' => array(
        0 => 'Fluence 1'),
      'SANDERO' => array(
        0 => 'Sandero Old',
        1 => 'Sandero New')
    );


    Собрать такой массив можно примерно так:
    while($row = mysqli_fetch_assoc(mysqli_query('SELECT ... FROM ... ORDER BY ...'))){
      // model = FLUENCE, modification = Fluence 1
      $output[$row['model']][] = $row['modification'];
    }
    Ответ написан
    3 комментария
  • Какой язык программирования/направление выбрать? Смена профессии

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    В сфере мобильных приложений сейчас хороший спрос. Изучайте либо нативный Obj-C, либо что-нибудь кроссплатформенное.
    Ответ написан
    Комментировать
  • Какой язык программирования/направление выбрать? Смена профессии

    Hereigo
    @Hereigo
    Пишу на C# + Asp.Net (MVC) + .Net Core
    Добрый день.
    Мне 37 лет, работаю системным администратором. =)
    Уже около 3-4-х лет изучаю программирование. Случайно попал на курсы по языку C# (Ms .Net Framework). После чего начал писать программки для облегчения администрирования сети, збора статистики, вспомагательные утилитки для бухгалтерии и прочее. Серьёзную работу разработчиком пока не искал, но везде где сталкивался со свободными вакансиями - Веб сейчас более востребован. Так что, css + html + JS - то, что надо. Ну, а потом уже: PHP или ASP.Net или что-то ещё... И попробуйте начать с того, чтобы сделать кому-то простой сайтик. Может быть даже бесплатно. Опыт бесценен!
    Ответ написан
    Комментировать
  • Как практиковаться на Ruby / RoR ?

    Freika
    @Freika
    Senior Ruby on Rails developer
    В книге есть практика на протяжении 14 глав, кажется. Параллельно можно начать реализовывать свой проект. Я сделал агрегатор блогов(парсит рсс раз в 30 минут) еще до прочтения этой книги, сейчас закончил перенос несложного сайта на Рельсы, а когда взглянул в код агрегатора, заплакал кровавыми слезами. Буду переписывать.
    Одним словом, если есть идеи, беритесь за них. Потом десять раз переделаете, улучшите и обновите, и будет вам практический опыт.
    Ответ написан
    1 комментарий
  • Что самое простое освоить, чтобы начать зарабатывать?

    @iliyaisd
    Думаю, можно немножко подучить связку для веба (PHP, JS, HTML, CSS) и сделать 2-3 сайта бесплатно. Можно либо самостоятельно придумать тематику, либо, лучше, для знакомых (например, знакомой фирме предложить сделать сайт бесплатно или за символические деньги). Порог вхождения здесь невелик, главное в процессе этого много читать и на каждом этапе гуглить, как сделать правильно ту или иную вещь, а также укреплять знакомства с практикующими специалистами. Если есть склонность к творчеству, то я бы посоветовал попробовать даже дизайн самостоятельно нарисовать в фотошопе и сверстать его.
    После этого вполне можно либо ловить заказы на сайтах фриланса, либо попытаться устроиться стажёром в фирму на удалёнку. Я например, когда начинал, пошёл веб-программистом в подмогу опытному товарищу на крупный проект, при этом в послужном списке был всего один сделанный сайт, написанный полностью с нуля - сам делал дизайн, верстал и писал без движков, но у меня тогда был уже небольшой "общепрограммерский" опыт (всякие там паскали), который в Вашем случае компенсируется усердным чтением и обучением.
    Ответ написан
    Комментировать
  • Как грамотно хранить изображения в MySQL?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Вам стоит подумать про контекст задачи.

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

    Если же такой необходимости нет и 1 изображение может принадлежать только 1 альбому, то нет необходимости вводить третью таблицу.
    Ответ написан
    Комментировать
  • Какой фреймворк выбрать?

    IgorO2
    @IgorO2
    73
    А не думали на другом языке написать приложение?
    Ответ написан
    7 комментариев
  • Какой фреймворк выбрать?

    @young8junkie
    Symfony 2 - академичность, слабосвязность, продуманность. Немного Java way. Для изучения правильного ООП - лучший вариант. Немного выше уровень вхождения, потому несколько менее популярен.
    Yii - быстрый и простой. Немного костылей, немного велосипедов, компоненты сильно связаны.
    Симфони - большие и средние проекты.(Для малых проектов можно попробовать Silex, он базируется на компонентах симфони).
    Йи - средние и маленькие.
    Для выбора покопайте два варианта и выбирайте что больше понравилось. Ещё попробуйтей Laravel, он главный нишевый конкурент Yii
    Ответ написан
    6 комментариев
  • Как грамотно хранить изображения в MySQL?

    Первый вариант возможен только в том случае, если каждая картинка принадлежит только одному альбому (n : 1), второй вариант - если одна картинка может принадлежать нескольким альбомам (n : n).
    Ответ написан
    Комментировать