• Удаленная работа системным администратором. Насколько актуально в 2017?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    заниматься только ИТ, администрировать крутые проекты

    УСТРОИТЬСЯ в 2-3 компании для работы по удаленке

    утверждения, не то, чтобы противоречащие друг другу, но скажем так - ортогональные :) Крутые проекты бывают только в крупных компаниях, потому что они требуют денег, денег и еще раз денег. А это опять же корпоративные политики, регламенты, приказы... Зато будет только ИТ. Если же мутите свой бизнес - придется заниматься зиллоном "параллельных" тем - от бухучета до рекламы.

    Если хотите без регламентов и корпоративных политик - открывайте свое дело. Но там крутых проектов не будет - по крайней мере поначалу. А будут все те же корпоративные сети, только вид сбоку, общение через ТЗ. Крупным компаниям интересен только админ на фуллтайм, никаких удаленок они обычно не рассматривают.

    А теперь ответы
    1. Таким, у которых нет денег на админа или же экономят на админе. Удаленка - это нечто вроде спаренного телефона в СССР, когда пары телефонные не в каждую квартиру заходили. Уровень проектов там будет соответствующий. Уровень заказчика - тоже. Фраза "я довела мышь до края коврика, что теперь делать"? - анекодт, но взят из жизни :)
    2. Сотрудничают с равным. Если мутите свой бизнес, то зависит от того, какую. репутацию наберете. Если нет - какое сотрудничество?
    3. Так же как и везде - полно.
    4. Если мутите свой бизнес - читайте про PR. Если нет - про то, как общаться с потенциальным работодателем
    5. В крупной конторе, где можно рассчитывать на "крутые проекты" - это единственный способ трудоустройства. Если мутите свой бизнес - Вы сами себя трудоустроили :)

    Я Вас некоторым образом понимаю. Сам в таком положении был лет...эээ...десять назад. Но, если хотите заниматься "только ИТ", это означает, что есть другие люди, которые занимаются другими вещами - расчетом Вашей зарплаты, планированием закупок, оформлением трудовых книжек, перевозкой товара etc. А это может быть только в крупной компании. Открыв же свой бизнес, Вы избавляетесь от проблем, характерных для крупных компаний, но "чистого ИТ" уже не будет - хотите или не хотите, а придется заниматься бухучетом (или нанять), финансовым планированием (или нанять), рекламой и продвижением (или нанять), арендой офиса (или нанять). А если будете кого-то нанимать - это автоматически тащит за собой оформление трудовых договоров (или нанять)...

    Мягкое кресло и на все согласная секретарша БигБоссу вовсе не за просто так даются бонусом... :)
    Ответ написан
    Комментировать
  • Удаленная работа системным администратором. Насколько актуально в 2017?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Рекомендую мигрировать в то, что называют сейчас "DevOps инженерами", вакансий на удалёнку полно, платят хорошо.
    Ответ написан
    Комментировать
  • Заменит ли Kotlin Java в Android-разработке?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Такие замены "убийцы" jav'ы появляются каждые лет 5. Безусловно часть из них находит свою нишу. К примеру groovy, ceylon, scala, clojure и еще с пару десятков других.
    Касательно андроида, ну Гугл может просто в один прекрасный момент сказать что ява нам надоела и теперь все будет на go. Или как сейчас добавили оф поддержку котлина, но кто застрахован что в один прекрасный день они не решат сделать с котлином то что случилось с явой. Т.е. они могут просто взять и из собственных соображений сделать незначительные отличия языковые как это сейчас с явой.
    Ответ написан
    Комментировать
  • Заменит ли Kotlin Java в Android-разработке?

    Конкретно в мире Android разработки я бы сказал с большой долей вероятности Kotlin заменит Java, но это случится не так быстро. Постепенно, когда уверенность в Котлине закрепится, случится следующее:
    1. Официальная документация и примеры по Android-разработке от Google будут в двух вариантах.
    2. Официальная документация по умолчанию будет показывать примеры на Котлине, аналогично тому, как документация Angular.JS даёт примеры на TypeScript и предлагает опциональный вариант посмотреть вариант на чистом JavaScript.
    3. Android Studio начнёт создавать проект с поддержкой Kotlin по умолчанию
    4. В результате всего этого, новые Android-разработчики будут писать свой первый "Hello World" именно на нём
    5. Многие бывалые Java-разработчики начнут смотреть в сторону Kotlin с любопытством и поймут, что он решает многие проблемы Java и рано или поздно начнут на нём писать.

    Мне кажется, судьба Kotlin/Java в мире Android будет похожа на судьбу TypeScript/JavaScript в AngularJS и Swift/Objective-C в iOS разработке. Важным преимуществов Котлина является то, что он может сосуществовать с Java-кодом. Проекты, уже написанные на Java, не обязательно должны быть переписаны полностью с нуля. Словно по правилам естественного отбора в природе, он будет сосуществовать с Java, но завоевав любовь среди разработчиков у него будет больше шансов выжить и он начнёт внедряться всё больше и больше в проект до момента, когда в нём (проекте) не останется ни единого Java-класса.
    Ответ написан
    1 комментарий
  • Какими инструментами вы пользуетесь при разработке на C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    1) IDE (QtCretor) -- без комментариев
    2) gcc -- компилятор, gdb -- отладчик; иногда clang/lldb
    3) git и tig (текстовый интерфейс для гита)
    4) valgrind -- в основном профилирование
    5) meld -- дифы
    6) vim -- когда надо что-то мелкое поредактировать на сервере
    7) браузер -- без комметариев
    8) Ну разные консольные утилитки по необходимости, grep, sed, nm...
    9) cppcheck -- статический анализ
    10) Иногда кланговые санитайзеры
    Ответ написан
    Комментировать
  • Submit формы в QML, как лучше это делать?

    PavelK
    @PavelK
    Оба Ваших подхода - костыли.

    Для этого есть Q_PROPERTY, если вкратце - наследуете Ваш класс от QObject, прописываете Q_PROPERTY, например field1, дальше в QML
    Item {
     id: myForm
      objectName: "myForm"
     property var formHandler;
     
     TextIntput {
        id: textInput1
       onEditingFinished: {
          formHandler.field1= textInput1.text; (textInput1 можно отбросить и написать просто text)
       }
     }
    }

    Находите через findChild "myForm", устанавливаете ему через QVariant::fromValue(myFormHandler) инстанс класса обработчика. Таким макаром при завершении редактирования текста Вы в c++ классе автоматически получаете актуальное значение. Дальше, для сохранения значений, например в базу, можете прописать в слотах какую-либо функцию, например saveForm(); и в QML по нажатию кнопки её вызывать: formHandler.saveForm(); и уже ничего ниоткуда собирать не надо - всё будет в прописанных Q_PROPERTY.

    P.S. Это лишь один из вариантов =)
    Ответ написан
    1 комментарий
  • Yandex Maps — как вывести объекты в радиусе n из MySQL?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Все очень просто. Если учесть то, что координаты не учитывают кривизну земли, зная примерный радиус планеты можно вычислить дистанцию от одного объекта до другого с помощью легкой формулы.
    Ну и в SQL это выражается как-то так:

    SELECT
        `id`,
        (
            6371 *
            acos(
                cos( radians( %lat ) ) *
                cos( radians( `lat` ) ) *
                cos(
                    radians( `long` ) - radians( %lon )
                ) +
                sin(radians( %lat )) *
                sin(radians(`lat`))
            )
        ) as `distance`
    FROM
        `location`
    HAVING
        `distance` < %distance
    ORDER BY
        `distance`


    Где %lat и %lon - координаты, %distance - радиус в километрах.
    Ответ написан
    5 комментариев
  • Как реализовать rest API на django, что бы другое приложение могло изменять данные, обращаясь к этому API?

    @bioGavs
    Немного не ясен вопрос, вам не понятно как сделать приложение или как авторизовать это приложение.
    если первое то вы просто создаете новый проект и пишите клиент, который обращается к вашему апи, requests в помощь.
    если авторизация то почитайте о OAuth2.0
    Ответ написан
    2 комментария
  • Как сделать возвращение к началу программы?

    tomnolane
    @tomnolane
    профессиональный разработчик
    есть три варианта:
    1) использовать метку
    M:
    if (att == 1) {
    //или тут M:
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз")
    goto M; //(Здесь должен быть банальный рестарт программы.)
    }

    2) сделать функцию отдельно (рекурсию)
    private void MyFunc(bool stop = false;)
    {
    if(stop) return;
    if (att == 1) { 
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз")
    MyFunc(); //(Здесь должен быть банальный рестарт программы.)
    }
    }

    3) использовать цикл for (бесконечный)
    int damage = 100;
    for(;;)
    {
    if (att == 1) { 
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз") 
    }
    hp < damage  ? break : continue; //(Здесь должен быть банальный рестарт программы.)
    }


    upd
    На свой лад накидал в некоторых местах условия выхода из метода/цикла. Поскольку по вашему коду не понятно, в каком случае должно всё это прекратится, поэтому условие, когда всё должно закончится - сами подкорректируйте. Главное, выше три способа, полностью отвечают на ваш заданный вопрос.
    Ответ написан
    5 комментариев
  • Как получить запись из БД по её ID не используя id в url, в yii?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Вы хотите, что бы в url не было id, но хотите по нему искать - замкнутый круг. Чудес не бывает.
    Самый простой способ, это сделать в таблице специалиста еще один столбец url и туда писать url и по нему находить. Так вы решите еще 1 проблему, которую не видите, уникальность этого url, так как даже при уникальной паре first_name и last_name после транслитерации может получиться не уникальное значение.
    Писать данные в этот столбец можно при создании специалиста. Но есть еще одна проблема, это постоянство url. Если пользователь сменит first_name или last_name то менять ли этот url? Ведь ссылочная масса, которая накопилась будет вести в никуда, а если не менять этот url, то возникает вопрос целесообразности подхода в целом. Посмотрите на великих мира сего, кто прошел этот путь - соц сети. Они не автоматизируют этот процесс, они генерят уникальный url для профайла и потом предлагают произвольную смену. Это оправдано. Это правильно.
    Как вариант иногда делают так:
    domain.com/id_firstname_lastname при этом в экшене можно извлечь id и найти пользователя, все что после id_ носит исключительно декоративный характер. Но я не сторонник данного метода, так как отдавать в url id записи не айс. И тогда лучше отдавать хеш, а раз хеш, то опять таки доп столбец нужен и приходим к первому варианту.
    Ответ написан
    1 комментарий
  • Как быстро научиться веб-программированию, верстке, созданию сайтов?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Вот набор ссылок, который позволит Вам самостоятельно все (html,css) освоить:
    https://htmlacademy.ru
    https://www.w3schools.com/
    Вот удобный справочник:
    htmlbook.ru
    caniuse.com

    Не вижу смысла платить,если все есть в бесплатном доступе. Плюс курсов в youtube масса.
    Если нужен репетитор, значит не стоит вообще этим заниматься.
    Но не питайте иллюзий. Начать верстать можно очень быстро, но набрать скил, за который будут готовы платить - не просто. А платить хорошо, совсем не просто и не все добираются. Верстальщиков куча, а после курсов без опыта - просто тьма, поэтому работают за еду. Так что перед тем как пойти в it спросите себя "а готова ли я очень много работать, всю жизнь учиться, и ждать несколько лет пока начну получать более менее нормальные деньги?". Если да - ок. Если нет - не стоит начинать. Научиться делать сайты за неделю и зарабатывать супер деньги это миф, его придумали как раз платные курсы.
    Ответ написан
    3 комментария
  • Где закрепить или найти практику по Python? Или учить другой язык?

    Привет.

    1) Задачки и практика. Задачи в вакууме тебе не нужны - делай реальные проекты. Я, например, делал сайты на Django, Парсеры HTML через beautifulSoup, инди игрушку на Panda3D - все питон. Плюс куча различных вещей уровнем поменьше.

    2) Я хочу писать десктоп. Работодателю все равно на то, что ты там хочешь делать. Реальность такова, что сейчас на десктоп-коммерцию пишут мало и делают это либо на .net (где требуется профильная вышка и 3+ года опыта), либо на Электроне (где надо хорошо разбираться во всей этой идиотии с JS). Поэтому, тут тебе питон не нужен, на нем свои приложеньки, конечно пишут, но работу не найти.

    3) Питон - это:
    1. Тестирование (но нужно еще и Java знать, хотя бы базу)
    2. Девопс (но нужно еще и Java знать, хотя бы базу)
    3. Биг-дата (но нужно иметь профильное образование)
    4. Веб-разработка (Django)


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

    P.s.s. Не учи все языки подряд. Для работы тебе нужен всего один язык (плюс прослойка в виде html/css/xml/sql/js - но это все понимается быстро).

    P.s.s.s. Если есть профильное образование (тут понимается что-то математическое, физическое, что HR воспринимут не гумманитарием), и возраст позволяет, то учи Java/.net - через 1-2 года сможешь работать и не париться особо. Если ни времени, ни образования, ни возраста, то уже придется собирать конфету из говна (тут любой язык подойдет - главное быть фартовым =)
    Ответ написан
    5 комментариев
  • Как стать Java junior'oм?

    @EgorNS
    Для того чтобы претендовать на вакансию Java junior нужно потратить на изучение очень много времени. В среднем у людей выходит по 1-1,5 года. Необходимо владеть Java Core, где нужно уделить достаточно внимания многопоточности и коллекциям и хорошо разбираться как все это работает. Обязательно понимать как работают сервлеты и JDBC. Также нужно изучить окружение: tomcat, maven, git, желательно также немного владеть unix shell. На интервью во многих компаниях вас также могут спросить про основы Spring и Hibernate. Также желательно владеть английским не ниже уровня B1. Если вы изучите эти все технологии и разработаете с их помощью например небольшое веб-приложение, то по моему мнению вы будете считаться достаточно сильным джуниором, который с большой вероятностью сможет обойти большинство своих конкурентов, претендующих на эту вакансию. Желаю удачи в обучении!
    Ответ написан
    Комментировать
  • Можете посоветовать книгу по Java для написания сайтов?

    @EgorNS
    Я в этом году защитил на отлично дипломную работу - интернет-магазин на Java. Перед написанием проекта прочел пару книг по Java. Первая книга о Java Core - Шилдт "Java. Полное руководство". Но я думаю, что Эккель и Хорстманн подойдут еще лучше, как альтернатива. Вторая книга - Буди Курняван "Программирование web-приложений на языке Java" познакомит тебя с сервлетами, JSP и JDBC. Это компоненты Java, с помощью которых разрабатываются веб-приложения. В книге описаны достаточно старые методы работы, но это на мой взгляд лучшее, что есть на русском. Если неплохо знаешь английский, то в идеале можно ее заменить "Murach's Java Servlets and JSP, 3rd Edition". Это классика по сервлетам. Также я неплохо знал html, css и jQuery, что пригодилось мне для разработки фронтенда для магазина, а также был небольшой опыт работы с СУБД MySQL. Все остальные вопросы, которые появлялись в процессе, решал с помощью форумов и stackOverflow. При проектировании архитектуры приложения брал за основу Spring MVC - javastudy.ru/wp-content/uploads/2015/04/RequestLif...

    В итоге технологии, которые были использованы - это Java, Servlets, JSP, JSTL, JDBC, MySQL, HTML, CSS, jQuery, bootstrap, Tomcat, Maven и jUnit для написания тестов. Конечно таким способом веб-приложения писали лет 10-15 назад, но я не стал задействовать фреймворки принципиально, чтобы разобраться в том, как работают веб-приложения на Java без них. Написав такой проект ты сможешь понять принцип работы такого фреймворка, как Spring MVC.

    Я остался очень доволен что не стал писать дипломный проект на php, как планировал ранее. Я получил отличный опыт и у меня была огромная мотивация для интенсивного изучения Java! Желаю успешно защититься! :)
    Ответ написан
    Комментировать
  • Как правильно разрастаться веб приложению написанному на spring?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Сложные фильтры должны применяться, по возможности, в запросах к хранилищу данных.
    Если нет такой возможности, то их желательно в DAO и помещать.

    А вообще - нет никакого смысла делать из этого проблему и уж тем более пытаться её решить. Код работает, выполняет свою задачу и не мешает разработчику - значит, трогать его не надо. Это пустая трата времени, особенно, когда проект в процессе разработки. Вот когда проект реализован и корректно выполняет все свои задачи, тогда и стоит задуматься о рефакторинге.

    spoiler
    8nm64g.jpg
    Ответ написан
    Комментировать
  • Какие книги почитать по функциональному программированию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Функциональное программирование
    Седой и строгий
    Восприятие языка - это вопрос индивидуальный. То, что далось легко мне, может показаться сложным вам. И наоборот. Но личным опытом поделиться могу:

    У Haskell есть веское, на мой взгляд, преимущество - программы компилируются в бинарники. А минус в том, что я никогда не слышал о сколько-нибудь значимых случаях реального применения Haskell. Для восприятия он мне показался очень тяжёлым, литературу по нему можно использовать как снотворное.

    Самой простой для изучения мне показалась Scala. Мультипарадигменность языка обеспечивает более лёгкое вхождение из императивного стиля программирования. Есть замечательный учебник "Scala для нетерпеливых" Кея Хорстманна. К тому же, вакансии на scala-программистов есть даже в РФ. Минусом для меня послужила как раз мультипарадигменность. Нет вызова, нет настоящей мозголомки, способствующей перекраиванию мышления.

    Erlang интересный, чисто функциональный, широко применяются. Но чувствуется некоторая незаконченность языка и отовсюду выпирает телекоммуникационное наследие. Есть неплохой учебник на русском Чезарини и Томпсона "Программирование в Erlang". Плюс, сейчас появился Elixir. Слышал, что он хорош и, что в нём решили все проблемы Erlang, но сам не щупал.

    Я в результате остановился на Clojure. Кложа сложная, но она реально учит думать по-новому. По ней много книг. В том числе есть на русском - "Программирование на Clojure" Эмерика. Хорошая документация, большое и дружелюбное сообщество. В реальном мире применяется чаще, чем Haskell, но реже Scala или Erlang.
    Ответ написан
    6 комментариев
  • Какой уровень математики нужен в GameDev (Unity, UE4)?

    longclaps
    @longclaps
    Не ниже академика, на крайняк член-кора.
    Ответ написан
    3 комментария
  • Есть идеи, как реализовать создание/хранение приходной/расходной накладной на Django?

    neatsoft
    @neatsoft
    Life is too short for bad software
    В одной таблице должны храниться документы, во второй - строки табличной части (всех документов).

    models.py:
    from django.db import models
    from django.db.models import Max, Sum
    from django.utils.translation import ugettext_lazy as _
    
    
    class Product(models.Model):
        name = models.CharField(
            _('Name'),
            max_length=200,
            db_index=True,
        )
    
        def __str__(self):
            return self.name
    
    
    class Document(models.Model):
        INVOICE = 'I'
        WAYBILL = 'W'
        TYPE_CHOICES = (
            (INVOICE, _('Invoice')),
            (WAYBILL, _('Waybill')),
        )
        type = models.CharField(
            _('Type'),
            max_length=1,
            choices=TYPE_CHOICES,
        )
        number = models.CharField(
            _('Number'),
            blank=True,
            max_length=50,
        )
        created_at = models.DateTimeField(
            _('Created'),
            auto_now_add=True,
            db_index=True,
        )
    
        @property
        def total(self):
            return self.items.aggregate(sum=Sum('total'))['sum']
    
        class Meta:
            ordering = ['-created_at']
    
    
    class DocumentItem(models.Model):
        document = models.ForeignKey(
            Document,
            models.CASCADE,
            related_name='items',
        )
        position = models.PositiveIntegerField(
            verbose_name=_('Position'),
            editable=False,
            db_index=True,
        )
        product = models.ForeignKey(
            Product,
            models.PROTECT,
        )
        price = models.DecimalField(
            _('Price'),
            max_digits=12,
            decimal_places=2,
        )
        quantity = models.DecimalField(
            _('Quantity'),
            max_digits=10,
            decimal_places=3,
        )
        total = models.DecimalField(
            _('Total'),
            max_digits=12,
            decimal_places=2,
        )
    
        def save(self, *args, **kwargs):
            if not self.position:
                position = self.document.items.aggregate(Max('position'))['position__max'] or 0
                self.position = position + 1
            super(DocumentItem, self).save(*args, **kwargs)


    admin.py:
    from django.contrib import admin
    
    from .models import Product, Document, DocumentItem
    
    
    @admin.register(Product)
    class ProductAdmin(admin.ModelAdmin):
        pass
    
    
    class DocumentItemInline(admin.TabularInline):
        model = DocumentItem
        fields = (
            'position',
            'product',
            'price',
            'quantity',
            'total',
        )
        readonly_fields = (
            'position',
        )
        ordering = ['position']
    
    
    @admin.register(Document)
    class DocumentAdmin(admin.ModelAdmin):
        inlines = [
            DocumentItemInline,
        ]
        list_display = (
            'type',
            'number',
            'created_at',
            'total',
        )
        list_filter = (
            'type',
        )
        search_fields = (
            '=number',
        )


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

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

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Используйте для хранения freeze_time число секунд, так будет удобнее хранить в БД и оно удобно конвертируется в/из timedelta, который уже можно прибавлять к datetime.
    Пример:
    >>> from datetime import datetime, timedelta, now
    >>> begin_date = datetime(2017, 9, 1, 0, 0, 0)
    >>> end_date = datetime(2017, 9, 30, 0, 0, 0)
    >>> freeze_time = end_date - now()
    >>> freeze_time
    datetime.timedelta(2, 17264, 411894)
    >>> freeze_time.total_seconds()
    190064.411894
    >>> freeze_time = int(freeze_time.total_seconds())
    >>> freeze_time
    190064
    >>> now() + timedelta(seconds=freeze_time)
    datetime.datetime(2017, 9, 30, 0, 1, 1, 371159)
    Ответ написан
    1 комментарий
  • Какой фреймворк или CMF выбрать для примитивной соц сети; за исключением php based решений?

    @buzina_v_ogorode
    Неважно.
    Это ни на что не влияет.
    Влияет только ваше умение.

    Выбирать то, что лучше знаешь.

    Это только начинающие полагают, что есть некая серебяная пуля - выбирешь, мол, правильный фреймворк и дела пойдут в гору.
    А это не так. Совсем не так.

    Важен не инструмент, а ваше умение им пользоваться.

    Выбирай тот, что лично ты (или нанятые тобой разработчики) лучше всего знают.
    Ответ написан
    1 комментарий