Задать вопрос
  • С чего начать работу на фрилансе?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Начните с гугла. На тостере подобных вопросов было несколько сотен.

    Без умения пользоваться поиском вам вообще не стоит заниматься самостоятельной работы, потому что работая на дядю, дядя берет на себя кучу рисков - что вы не справитесь, что вы не найдете клиента, что вы не поймете как вообще пользоваться paypal и обналичить деньги, что вы не сможете адекватно понять сколько по пути обналичивания будет налогов и останетесь на нуле без еды.

    На фрилансе главная задача - уметь быть САМОСТОЯТЕЛЬНЫМ, а вы даже начать сами не можете.
    Ответ написан
    Комментировать
  • Это вообще люди делают?

    vicodin
    @vicodin
    Имею некоторый опыт
    опыт измеряется не в годах работы ;-)
    Ответ написан
    3 комментария
  • Это вообще люди делают?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Люди и стадион сделаны с софте подобном Autodesk 123D
    Машинка за исключением экрана с wareframe рендером тоже (на экране с wareframe просто замоделена).
    Часть задников сделана текстурой на скайбоксе.
    Часть людей - плоскими спрайтами с текстурой.
    Переходы - горизонтальным размытием с рандомизированной силой в зависимости от y координаты.
    Глобусов таких кучу можно найти на https://threejs.org/

    В целом выглядит стильно, но это больше заслуга дизайнеров. В технологическом плане ничего революционного. Глобус так вообще жуть тормозит - можно было и оптимальнее сделать.
    Ответ написан
    3 комментария
  • Это вообще люди делают?

    dimovich85
    @dimovich85 Куратор тега CSS
    https://u-academy.net/
    Поделюсь с вами вот такой ссылкой:
    https://www.youtube.com/playlist?list=PLswdBLT9llb...
    Ответ написан
    1 комментарий
  • Upwork -> epayments, как?

    opium
    @opium
    Просто люблю качественно работать
    Вы же сами написали wire transfer
    Ответ написан
    5 комментариев
  • Как правильно сверстать путь - "змейку"?

    5b60388f11ce8990114373.jpeg
    Ничего сложного, если напрячь извилины и увидеть ваш рисунок несколько иначе. Тогда выходит что ваша змейка это просто 3 блока с 33..33% шириной. Просто для первого блока не показывается правая и нижняя граница (border) и для верхнего - верхняя и права. Закрутку даете через border-radius, с тем, что между ними находится можете как хотите разобраться. можете сделать полосой, можете сделать блоком с только одной границей. Расположить проще всего флексами.
    Ответ написан
    Комментировать
  • Как правильно перенести файлы в Google Диск?

    @NichitencoEvgh
    1. Создаешь в приложении Google Drive на твоем компе папку для этих файлов.
    2. Закидываешь туда свои 50 гб, и затем ждешь, когда они синхронизируются с облаком.
    3. В настройках приложения Google Drive снимаешь синхронизацию с этой папки с файлами на компе.
    4. Удаляешь папку с файлами в приложении Google Drive . Они остаются только в облаке.
    Ответ написан
    Комментировать
  • Где можно найти и посмотреть "хорошие практики" на React?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Гайдлайн от airbnb по оформлению кода.
    Куча полезных ссылок по react + redux.
    Ответ написан
    Комментировать
  • Где можно найти и посмотреть "хорошие практики" на React?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Можете подчерпнуть хорошие практики из текстовых версий вебинаров или из вебинаров.
    Ответ написан
    Комментировать
  • Как получить доступ к модели B которая наследуется от A?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    ModelA.objects.get(id=1).modelb.age
    Ответ написан
    Комментировать
  • Работает ли telegram oauth в России?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Telegram login widget в России не работает, но авторизация через Telegram элементарно реализуется с помощью бота. При отправке команды бот вызывает веб-хук, передавая имя пользователя, в ответ отправляется одноразовая ссылка для входа на сайт. Бота нужно запускать на зарубежном хостинге, т.к. с него должен быть доступен api.telegram.org, пользователь может находиться где угодно.

    Вот пример на Django 2.0 (максимально упрощённый):
    1. Через @BotFather нужно создать нового бота, записать полученный token - <bot_token>
    2. Добавить команду /login с помощью /setcommands
    3. В консоли сгенерировать случайный uuid (uuidgen -r) - <webhook_token>
    4. Настроить веб-хук (вместо httpie можно использовать curl, wget, или любую другую подобную утилиту):
      http "https://api.telegram.org/bot<bot_token>/setWebhook?url=https://<domain_name>/bot/<webhook_token>/"

    5. Внести необходимые изменения в проект
    6. Если используется DatabaseCache, инициализировать таблицу в базе данных:
      ./manage.py createcachetable

    .

    settings.py
    ...
    TELEGRAM_BOT_ACCESS_TOKEN = <bot_token>
    TELEGRAM_BOT_WEBHOOK_TOKEN = <webhook_token>
    TELEGRAM_BOT_OTP_TIMEOUT = 120
    
    USE_X_FORWARDED_HOST = True
    
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'django_cache',
        }
    }
    ...


    urls.py
    ...
    from .views import BotView, LoginView
    
    
    urlpatterns = [
        ...
        path('bot/<uuid:token>/', BotView.as_view()),
        path('login/<uuid:otp>/', LoginView.as_view(), name='login'),
    ]


    views.py
    import json
    import requests
    import uuid
    
    from django.conf import settings
    from django.contrib.auth import login
    from django.contrib.auth.models import User
    from django.core.cache import cache
    from django.http import HttpResponse, HttpResponseNotFound, HttpResponseRedirect
    from django.urls import reverse
    from django.utils.decorators import method_decorator
    from django.views import View
    from django.views.decorators.csrf import csrf_exempt
    from django.views.generic import TemplateView
    
    ...
    
    @method_decorator(csrf_exempt, name='dispatch')
    class BotView(View):
        def post(self, request, token):
            if str(token) != settings.TELEGRAM_BOT_WEBHOOK_TOKEN:
                return HttpResponseNotFound()
    
            params = json.loads(request.body)
            message = params['message']
    
            if message.get('text') == '/login':
                user = message['from']
                chat_id = user['id']
                data = {
                    'username': user['username'],
                    'first_name': user.get('first_name', ''),
                    'last_name': user.get('last_name', ''),
                }
    
                otp = uuid.uuid4()
                cache.set(otp, data, settings.TELEGRAM_BOT_OTP_TIMEOUT)
                path = reverse('login', args=[otp])
                login_url = request.build_absolute_uri(path)
    
                url = 'https://api.telegram.org/bot{}/sendMessage?chat_id={}&text={}'.format(
                    settings.TELEGRAM_BOT_ACCESS_TOKEN,
                    chat_id,
                    login_url,
                )
    
                requests.get(url, timeout=10)
    
            return HttpResponse('')
    
    
    class LoginView(TemplateView):
        template_name = 'login.html'
    
        def dispatch(self, request, otp):
            self.data = cache.get(otp, {})
            return super().dispatch(request, otp)
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['data'] = self.data
            return context
    
        def post(self, request, otp):
            cache.delete(otp)
    
            username = self.data.get('username')
            if not username:
                return HttpResponseRedirect(request.path)
    
            user, created = User.objects.update_or_create(
                username=username,
                defaults={
                    'first_name': self.data.get('first_name', ''),
                    'last_name': self.data.get('last_name', ''),
                },
            )
            login(request, user)
    
            path = reverse('home')
            return HttpResponseRedirect(path)


    templates/login.html
    {% extends 'bootstrap4/bootstrap4.html' %}
    
    {% block bootstrap4_content %}
    
    <div class="container">
    
      <div style="padding:5rem; text-align:center;">
        {% if not data %}
          <h1>This url invalid or expired.</h1>
        {% else %}
          <h1>Login as {{ data.username }}</h1>
          <form action="" method="post">
            {% csrf_token %}
            <button type="submit" class="btn btn-primary btn-lg btn-block">
              Login
            </button>
          </form>
        {% endif %}
      </div>
    
    </div>
    
    {% endblock %}
    Ответ написан
    Комментировать
  • Что выбрать: Django или Flask?

    Для начала Django. Во первых генерируется базовая структура проекта, во вторых всё что нужно в комплекте.
    Научитесь писать на джанге- научитесь и на фласке, они очень похожи.
    А как только вы во фласке прикрутите орм, шаблонизатор, wtforms, разнесёте код по отдельным приложениям, то в итоге у вас получится Django
    Ответ написан
    Комментировать
  • Что выбрать: Django или Flask?

    sim3x
    @sim3x
    джанго
    По книге: two scoops of django
    Или по туториалу
    Ответ написан
    7 комментариев
  • $100 за аренду ПК, какова вероятность мошенничества?

    ZERGE
    @ZERGE
    Распространенная схема. Нарушение правил Апворка.
    Ответ написан
    3 комментария
  • $100 за аренду ПК, какова вероятность мошенничества?

    SagePtr
    @SagePtr
    Еда - это святое
    Причём в России это очень опасно, если они совершат что-нибудь неудобное нынешней власти через ваш компьютер - отвечать за это будете вы
    Ответ написан
    1 комментарий
  • Как быстрее получить высокий рейтинг на Upwork начиная с чистого аккаунта?

    vicodin
    @vicodin
    Имею некоторый опыт
    на мелких проектах велика вероятность наоборот растерять рейтинг, так как клиенты-жлобы ставят оценки более строго. Не парьтесь о рейтинге, если у вас будет 2 проекта по 20к$ на каждом, это даже лучше чем 100% jss и заработанных 100$
    Ответ написан
    Комментировать
  • Будут ли затронуты карты Payoneer новым законопроектом?

    tema_sun
    @tema_sun
    Точно вам никто не скажет, но их карты попадают под эти требования. Не вижу причин, почему бы для них были сделаны исключения.

    Необходимо сообщить сумму, дату и место этой операции, а также номер карты.

    а так же имя владельца, срок действия и CVV =)
    Ответ написан
    Комментировать
  • Как в Django создать атрибут модели без добавления поля в БД?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Для этого можно использовать либо property:
    import os
    
    from django.db import models
    
    
    class Article(models.Model):
        title = models.CharField(
            max_length=200,
        )
        image = models.ImageField(
            blank=True,
            upload_to='images',
        )
    
        @property
        def thumbnail(self):
            if self.image:
                path, filename = os.path.split(self.image.url)
                name, ext = os.path.splitext(filename)
                filename = 'prefix_' + name + '_suffix' + ext
                return os.path.join(path, filename)


    либо функцию:
    import os
    
    from django.contrib import admin
    from django.utils.html import format_html
    
    
    @admin.register(Article)
    class ArticleAdmin(admin.ModelAdmin):
        list_display = (
            'title',
            'get_thumbnail',
        )
        fields = (
            'title',
            'get_thumbnail',
        )
        readonly_fields = (
            'get_thumbnail',
        )
    
        def get_thumbnail(self, obj):
            if obj.image:
                path, filename = os.path.split(self.image.url)
                name, ext = os.path.splitext(filename)
                filename = 'prefix_' + name + '_suffix' + ext
                return format_html('<img src="{}">', os.path.join(path, filename))
        get_thumbnail.short_description = 'Thumbnail'
        get_logo.admin_order_field = 'image'


    либо и то, и другое:
    import os
    
    from django.contrib import admin
    from django.utils.html import format_html
    
    
    @admin.register(Article)
    class ArticleAdmin(admin.ModelAdmin):
        list_display = (
            'title',
            'get_thumbnail',
        )
        fields = (
            'title',
            'get_thumbnail',
        )
        readonly_fields = (
            'get_thumbnail',
        )
    
        def get_thumbnail(self, obj):
            url = obj.thumbnail
            return format_html('<img src="{}">', url) if url else ''
        get_thumbnail.short_description = 'Thumbnail'
        get_logo.admin_order_field = 'image'
    Ответ написан
    Комментировать
  • Как вы делаете транслитерацию текста в под url?

    neatsoft
    @neatsoft
    Life is too short for bad software
    pip install python-slugify

    >>> from slugify import slugify
    >>> slugify('Тестовый набор')
    'testovyi-nabor'
    Ответ написан
    Комментировать