• Как учить что-то новое и быстро не забывать?

    Куча практики
    Море практики
    В какой-то момент для тебя какой-то аспект просто становится обыденным и простым, как ходьба, и забыть это почти невозможно.
    Но это только благодаря океану практики.

    PS: уметь кодить и помнить что-то - две абсолютно разные вещи. Практика и теория тут не подходят для сравнения.
    Ответ написан
    Комментировать
  • Из C# в Python! Как это сделать максимально быстро?

    Rou1997
    @Rou1997
    Если на C# программируете, то уже документацией и поиском должны уметь пользоваться, если не умеете, давно пора научиться.
    Ответ написан
    Комментировать
  • Из C# в Python! Как это сделать максимально быстро?

    Официальная документация, что по Python, что по Django.
    Ответ написан
    Комментировать
  • Движение персонажа под углом?

    @Mercury13
    Программист на «си с крестами» и не только
    Расскажу, как поступал я. Писал на Java ME, так что особо сложных идей не было.

    У каждой плитки была алгоритмически заданная поверхность (pavement). В более новых версиях движка приделали и потолок — впрочем, неважно.
    Для простоты введём несколько ограничений. Все они, разумеется, обходятся усложнённой логикой.
    • Ни на чём, кроме плиток, персонаж стоять не может. Тогда можно обойтись флагом: isSupported: true/false.
    • Поднимаясь по склону, персонаж не ударится головой в потолок. Кстати, у нас было два разных геймдиза и два разных подхода — когда один увидел этот баг, пошёл жаловаться, второй взял ограничение на карандаш и не делал таких уровней.
    • Неровности достаточно велики, чтобы можно было проверить ноги слева и ноги справа — и понятно, на какой высоте ему стоять.
    • Соотношение «площадь ног / размер хитбокса» достаточно велико, чтобы, пока персонаж падает, его гарантированно вытолкнуло из стены.
    В зависимости от скорости персонажа и крутизны склонов подберём epsilon — диапазон поиска поверхности.
    Предположим, наш персонаж стоит на чём-то и двигаем его вправо.
    1. Сдвинем его туда, где он должен быть.
    2. Попробуем подстроить высоту, взяв правую сторону ног и отыскав новую поверхность в диапазоне (y — epsilon, y + epsilon). То же самое с левой стороной ног. То, что выше — и есть наш новый y. Если не получилось — УПИРАЕТСЯ (см. шаг 3).
    3. Если на шаге 2 персонаж не упирается в стену, проверим на упор весь хитбокс. Если упирается — вытолкнем его из стены, снова подстроим высоту по принципу 2.
    Ответ написан
    2 комментария
  • Как добавить HTML атрибуты в form.field из шаблона?

    @deliro
    Нативно никак. Без сторонних модулей два варианта:
    1) Класс формы. Считаю, что это ужасно.
    2) Собственный inclusion_tag

    Но удобнее использовать django-widget-tweaks.
    Ответ написан
    1 комментарий
  • Знаю основы HTML CSS, но верстать не получается. Как преодолеть баръер?

    Skolpov
    @Skolpov
    Веб-дизайнер
    «Ты в начале крив, косой,
    а потом уж Лев Толстой».


    Ты молод, зелен, девственно чист перед версткой. Пока у тебя нет практического опыта а есть только теория. Все ново, все страшно. Ожидаешь от первого раза с ней романтики и нежности, а на деле — она будет жестко рвать тебя без сожаления.

    «Боже, я никогда не научусь верстать как они :( ...»
    «Блин эти ребята так круто делают, видимо у меня нет дара...»
    «Наверно это не мое, лучше пойду я отсюда...»

    КОНКРЕТНО О ПРАКТИКЕ НОВИЧКА

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

    Не нужно сразу пытаться сверстать весь сайт, научись верстать отдельные кусочки. Уверен, ты каждый день сидишь в VK. Поставь себе цель — Сверстать страницу регистрации VK например за три дня. Сегодня например сверстай шапку (без перфекционизма). Начни с малого. Со временем одной левой сможешь верстать то, что сейчас тебе кажется тяжелым. Да будет не так, да многое из головы вылетит. Не беда, гугл всему голова. У любого профи есть самый главный Шаолиньский скилл — «Мастерство великого гугления». Не все его постигают в начале пути, но многие все равно придут к нему однажды.

    Перфекционизм и навык PixelPerfect— качество профессионалов, мы новички должны в начале делать ошибки Не надо вылизывать каждый участок макета, к этому ты придешь сам, но тогда, когда ты уже спокойно сможешь верстать. За то время пока ты пытаешься сделать крошечный блок сайта идеальным, ты бы мог уже быстро набросать весь макет и на практике использовать сразу много тегов и увидеть их к действии. Не надо заниматься в начале созданием идеального сайта, первые сайты все равно будут говно.

    Не надо вначале практиковаться по 10 часов в день. Да быстро научишься. Но и быстро выгоришь и потеряешь интерес. Все как в спорте, ты можешь пойти в первый раз в зал и долбить там хоть весь день, но завтра ты уже точно не пойдешь туда, да и вообще забросишь. Мышцы растут от прогресса нагрузки с которыми ты работаешь а не от ежедневной, многочасовой дрочи себя. Ты растратишь все ресурсы и, как я уже сказал, бросишь это дело вообще. Постепенно, понемногу, начиная с маленьких частей, ты придешь к тому, что сможешь легко сверстать большую часть макета. Потому что твои мозги тренированы и привыкли к выполнению такой работы.

    Главное не останавливаться. И надо смириться, что верстальщик всегда должен развиваться. Не только теорией но и практикой. Это его дар и его проклятье на всю жизнь. А грамотно развиваться поможет только грамотный подход к этому.

    Всего лишь мое маленькое, скромное мнение.
    Ответ написан
    Комментировать
  • Что лучше изучить для фриланса по вечерам?

    @Siberian_Bear
    Выше писали о Geekbrains.
    Ни за что! Там часами морда в камеру рассказывает какие то вещи, на ходу исправляя код, долго думая и т.д.
    Эти грезят многие русские онлайн-курсы - по факту записи с вебинаров.
    Берите курсы с Линды. Там авторы готовят видео заранее - всё чётко, по подготовленному сценарию. Никакой затянутости. В общем, порядочное видео.
    Вообще курсы лучше книжек на начальном этапе - потому что там всё по порядку, по полочкам.
    Если английского не знаете, ищите в складчинах и на торрентах переводы курсов - на базовые технологии их много.
    Ответ написан
    Комментировать
  • Как повысить свои навыки программирования на С/С++?

    abyrkov
    @abyrkov
    JavaScripter
    Ну что же... итак.
    1. Узнайте больше о кодстайлах
    Кодстайл(codestyle) - это, в буквальном смысле, стиль кода. Если вы будете писать по кодстайлу, то проблем явно станет меньше. Код станет читабельнее, его станет легче читать и сопровождать. А тот код, что написан с явными нарушениями очевидных правил... это такой же вырвиглаз как пробелы перед знаками препинания и ???.
    2. Научитесь пользоваться дебаггером
    Действительно. Дебаггер это, в буквальном смысле, антибаг. Багом, если вы еще не в курсе, называют именно логические ошибки. Ну, я думаю, освоив этот инструмент вы станете гораздо успешным охотником за покемо... жуками-багами.
    3. Перейдите на IDE
    Многие IDE или продвинутые редакторы имеют кучу плюшек, которые облегчат вам жизнь до того, что создание кода превратиться в чистое наслаждение. Оно того стоит.
    4. Анализируйте ошибки
    Все делают ошибки. Но если мы будем узнавать и запоминать в чем тогда была ошибка выше шанс, что мы ее не сделаем в следующий, и, если мы ее все-таки сделаем, то куда быстрее ее найдем.
    5. Учите и используйте библиотеки
    Люди давно уже поняли, что можно использовать один и тот же код несколько раз, а особо универсальный код - собственно библиотеку - можно использовать во многих проектах. Правильно подобранная библиотека позволит вам намного ускорить разработку типичных вещей.
    6. Сначала думай, потом делай
    Ты, наверно, думаешь, что как только крутым кодерам приходит в голову гениальная идея, они сразу же садятся и пишут код? Нет, они сначала придумывают структуру этой вещи, что они для нее будут использовать, алгоритм... словом, кучу вещей и только убедившись, что все предусмотрели, садятся, и пишут код.
    7. Практика + Google
    И, напоследок, запомни две простых вещи:
    В теории, теория и практика неразделимы. На практике это не так.
    и
    Профессионалы тоже пользуются гуглом. Может, даже чаще, чем новички.

    Удачных проектов тебе!
    Ответ написан
    5 комментариев
  • У сайта avito.ru есть своё API для разработчиков?

    kumaxim
    @kumaxim
    Web-программист
    Именно API у них нет, однако, загрузка объявлений доступна через XML. Описание формата.

    Логика работы такая:
    1. На своей стороне ты формируешь XML со всей информацией об объявлении
    2. Этот XML должен быть доступен по http:/domain.com/avito.xml
    3. Эту ссылку ты отдаешь Avito для работы
    4. С какой-то переодичность Avito проверяет твой XML и добавляет/изменяет/удаляет объявления

    Отчет о загрузке/обновлении/удалении обявлений доступен в личном кабинете и, вроде бы, еще на мыло отсылается.

    Также могу рекомендовать сервис afy.ru, однако, он работает только с недвижкой. Почему я его упомянул? Через него можно настроить автоматическую выгрузку объявлений сразу на кучу досок: Авито, Яндекс.Недвижимость, Майл,Недвижимость, ИРР и т.д. Смотри тут полный список.
    Ответ написан
    Комментировать
  • Где можно найти силуэт карты в векторном формате?

    rokkayte
    @rokkayte
    Совестливый трудоголик
    Есть отличный вариант - pixelmap.amcharts.com/#

    Самый быстрый и простой способ сделать быстро и без геммороя)) Выбрали Пхукет, задали параметры, сделали SVG и вперед))
    Ответ написан
    4 комментария
  • На чем можно написать автоматическую кормилку для кота?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    на чем можно написать эффективный софт, который бы позволил сэкономить на железе?

    Если комп всё время включен - Виндовый Планировщик заданий и, скажем, сканер или принтер как привод исполнительного механизма. Раз в 3 часа, скажем, что-то сканит или печатает, заодно насыпается корм.
    Ответ написан
    Комментировать
  • Как правильно работать с вложенными формами в Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Документация очень подробна на этот счёт.

    forms.py
    from django.forms import ModelForm
    from django.forms.models import inlineformset_factory
    
    from models import Receipt, Ingredient
    
    ReceiptFormSet = inlineformset_factory(Receipt, Ingredient, fields=('name', 'count', 'value'))

    views.py
    from forms import ReceiptFormSet
    
    def receipt_new(request):
        if request.method == "POST":
            formset = ReceiptFormSet(request.POST)
            if formset.is_valid():
                formset.save()
                return redirect('/receipts')
        else:
            formset = ReceiptFormSet()
        return render(request, 'admin_site/receipt_edit.html', {'formset': formset})

    receipt_edit.html
    <form method="post" action="">
        <table>
            {{ formset }}
        </table>
    </form>
    Ответ написан
    4 комментария
  • Как эффективнее всего изучать yii2?

    @vkdv
    Прости что лезу не в свое дело, но мое мнение, что yii2 лучше вообще не изучать. Изучай Laravel/Symphony etc

    Приведу несколько аргументов (в сравнении с laravel):

    1) Yii2 довольно слабо следует принципам SOLID и более того, не предоставляет в достаточной мере архитектурного решения разработчику, чтобы он сам им следовал
    2) Yii2 Костылен, а его исходники мягко говоря не очень. Например behaviors (костыль) против middlware(прозрачное решение)
    3) Yii2 Имеет устаревшие сервисы из коробки относительно Laravel , который развивается куда более активно.
    Помимо прочего в Laravel намного больше готовых сервисов (Elixir , scheduling, Queue , Blade, Storage, Broadcast , Notifications) Вместо этого в yii2 есть только bower assets - который представляет с собой дикий костыль и откровенно ужасен, да еще и не безопасен, а также вроде в yii2 есть сервис для работы с файловой системой, но я с ним не работал. Остальные сервисы типа bootstrap , console etc есть и там и там
    4) Магия Yii2 не способствует контролю за кодом и прозрачности
    5) Yii2 имеет довольно плохо продуманную архитектуру, о чем говорит например тот факт, что jquery вшит в ядро фреймворка (возможно и некоторые другие ассеты) и это очень странно. Особенно когда тебе нужно запускать консольные приложения
    6) ActiveRecord в yii2 доволбно запутан, по сравнению с https://laravel.com/docs/5.3/queries (кончено это субъективно)
    7) Yii2 не особо популярен в мире, у него плохая документация и я думаю он серьезно отстоет от конкурентов.

    Есть конечно у него и плюсы, например он быстрее laravel и у него есть поддержка модулей(что решается в laravel подключением пакета)
    Ответ написан
    9 комментариев
  • Django Admin как вывести ссылки?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Любое из полей ModelAdmin может быть функцией, формирующей всё, что заблагорассудится. Кусок из моего кода:
    @admin.register(Order)
    class OrderAdmin(admin.ModelAdmin):
        list_display = ('__str__', 'customer_link')
    
        def customer_link(self, obj):
            if obj.customer:
                return u'<a href="{0}">{1}</a>'.format(reverse('admin:auth_user_change', args=(obj.customer.pk,)), obj.customer)
            else:
                return obj.customer_fio
        customer_link.allow_tags = True
        customer_link.admin_order_field = 'customer'
        customer_link.short_description = Order._meta.get_field('customer').verbose_name.title()

    И для пущей наглядности кусок модели Order:
    @python_2_unicode_compatible
    class Order(models.Model):
        customer = models.ForeignKey(User, verbose_name=u'Заказчик', null=True, blank=True, related_name='orders')
        customer_fio = models.CharField(u'ФИО заказчика', max_length=150)
    Ответ написан
    Комментировать
  • Почему сейчас во всех вакансиях стали просить class-based view в Django?

    @deliro
    Выигрыша по производительности действительно нет, т.к. CBV превращаются в обычную вьюху.
    Выигрыш по скорости разработки есть, т.к. в generic описано достаточно много типовых вьюх (ListView, DetailView, FormView). Код в CBV более структурирован, особенно, если вьюха принимает сразу несколько методов (POST, GET, ...). Количество кода также сокращается за счёт использования самих CBV и миксинов.
    Ответ написан
    Комментировать
  • Зачем нужен Dependency Injection в Android разработке?

    artemgapchenko
    @artemgapchenko
    Начать неплохо бы с понимания того, что такое DI. Обратимся к википедии:

    Внедрение зависимости (англ. Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту.

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

    public class Api {
    	....
    	private final HttpClient client = new OkClient();
    }

    А, например, так:

    public class Api {
    	....
    	private final HttpClient client;
    
    	public Api(@NonNull HttpClient client) {
    		this.client = client;
    	}
    }


    И что нам это даёт?

    Ну, очевидно, нам теперь проще менять зависимости. Нужна вам другая реализация абстрактного класса HttpClient - взяли, и передали её через конструктор, или через метод-setter. В случае с первым куском кода, вам пришлось бы ещё и класс Api переписывать, что в случаях, отличных от тривиальных, может привести к ошибкам. Получается, что ваш класс теперь закрыт от изменений (смотрим Open/Closed Principle).

    Окей, а на практике-то какие бенефиты?

    Во-первых, вы теперь можете написать инициализацию вашей программы через конфигурационные файлы. Скажем, на старте будет читаться простенький текстовый файл, который определяет, какой httpclient использовать, какие настройки доступа к бд применять и так далее, и, исходя из этого, будут определяться зависимости.
    Во-вторых, вам теперь существенно проще писать тесты. Написали вы, скажем, какой-нибудь парсер, который принимает InputStream, содержащий в себе данные json-объекта, как-то хитро его парсит, и выдаёт вам объект вашей бизнес-модели. В приложении этот парсер будет принимать на вход реализацию InputStream'а, которая берёт данные из сети, а в тестах - реализацию, которая просто читает файл с диска (потому что тесты должны выполняться часто и быстро, и ваша задача в тесте - протестировать ваш парсер, а не скорость сетевого соединения).

    Вот, в общем-то, и всё. А Dagger - это просто библиотека, которая автоматизирует ручное внедрение зависимостей, равно как и другие DI-библиотеки.

    P.S. В некоторых случаях чрезмерное увлечение DI может привести к нежелательным эффектам, вроде чрезмерного усложнения кода, поэтому внедряйте аккуратно. Понимание приходит с опытом.
    Ответ написан
    Комментировать
  • Хорошая практика для Python?

    aRegius
    @aRegius
    Python Enthusiast
    Здравствуйте!

    Лутца читать лучше после Доусона. А вот читая Доусона, вы и сделаете первый шаг к тому, чтобы не "тупить в экран", если, конечно, подойдете к работе (именно работе, а не просто чтению) с этой книгой серьезно - там достаточное количество интересных и практичных задач.
    Ответ написан
    4 комментария
  • Какой планировщик вы используете?

    @vashaaa
    Юх с горы
    А жить то когда ?) но если вам таки нужно, то хватит дисциплины и клочка бумаги со списком дел на день, составленым вечером. С разделением, на очень важные и вторичные. Тогда выстроете себе минимум работы на день (первичные дела) и максимум (первичные +вторичные). И будете максимально продуктивны. Это разделение нужно так как не всегда выходит так как хочется. Все таки жизнь) удачи.
    Ответ написан
    Комментировать