• Как вы пишете статьи?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Меня неожиданно и приятно удивил Dropbox Paper. Там есть Markdown, подсветка кода, to do lists с галочками.
    Для черновиков очень подходит: автосохранение, доступ даже с мобильного, не нужно задумываться о коммитах, минималистичный интерфейс как у meduim, возможность поделиться документом и обсудить.

    https://paper.dropbox.com/

    Ну а потом для финальной публикации, вычитки и поддержки — gitbook или что-то своё.
    Ответ написан
    1 комментарий
  • Как защитить код от воровства в крупной компании?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Просто код - ничего не стоит. Ценность имеет только то, как и что он делает. Это важно понимать.
    У многих программистов дома хранятся копии проектов, в которых они участвуют, или участвовали раньше. Чаще всего их используют как набор сниппетов. Например в одном проекте был удобный класс для коллекций, в другом хорошо спроектировано несколько таблиц, в третьем - большой список исключений на любой чих и пук... Сам же проект "скомуниздить" - смысла, как правило, нет так как это не только код, это еще и целая экосистема и куча народу, которая ее обслуживает.

    Что касается передачи кода третьим лицам - это уже юридический и административный вопрос, NDA всякие и т.д.

    ИБ можно обмазываться до самого не балуйся, и это надо делать, но нужно соблюдать разумные границы.

    Знакомые как-то отзывались о проекте, где вся разработка велась на серверах в США по rdp, большинство решало задачи "на оте**сь" не потому, что вот подлецы такие, а потому, что отклик нажатия клавиши 5-15 сек. Проект закрыли через какое-то время, слишком долго, дорого и некачественно.
    Ответ написан
    Комментировать
  • Как вы пишете статьи?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Всё просто, варианта 2:
    1. Хотите предоставить управление Вашими данными (публикациями) 2-й стороне - пишите где угодно, но помните, что принятое Вами соглашение возможно будет изменено в одностороннем порядке!
    Т.е., Вы дарите свой труд согласно соглашению.
    2. Создаёте свой сайт, ставите CMS, например CMS Joomla!, создаёте шаблон и подсветку кода и пишите там: Вы сам себе хозяин и у Вас полное управление!

    Оптимальный для самопиара: Если контент не особо ценный + хочется стабильно и бесплатно + хорошее автоматическое SEO - лучше использовать blogger.com (Блоги Google), т.к. гугл свои сервисы всегда ставит выше других.
    Лично я - пишу там: https://sitecoder.blogspot.ru/
    Ответ написан
  • С чего начать изучение веб-дизайна?

    @archelon
    Полноценного всеобъемлющего учебника нет. Хотя попытки были, например книга Дмитрия Кирсанова.

    У студии Горбунова выходят отличные электронные книги:
    Типографика и вёрстка artgorbunov.ru/projects/book-typography
    Пользовательский интерфейс artgorbunov.ru/projects/book-ui
    Ответ написан
    Комментировать
  • Стоит ли брать 120Гц монитор?

    @Fixid Куратор тега Железо
    Разницу между 60 и 120 чувствую только прогеймеры. 120 имеет смысл брать только если используется активное 3д от nvidia. В остальных случаях это пустая трата денег.
    И не забываем что ваша видеокарта должна стабильно выдавать 120fps должна быть включена вертикальная синхронизация, иначе не увидите ни плавности, ни 120гц.

    Просто возьмите хороший монитор на 4к или FHD на AH-IPS матрице и наслаждайтесь
    Ответ написан
    3 комментария
  • Работа с сессиями в django. Как отследить кол-во юзеров на странице за час и кол-во активных юзеров на странице за 24 часа?

    @YraganTron Автор вопроса
    Разобрался с вопросом, может кому-то будет полезно. Джанго по умолчанию сохраняет данные о сессиях(только при условии, что вы что-то изменили в сессии) в модель Session.
    Я сделал таблицу MySession
    class MySession(models.Model):
        session_key = models.ForeignKey(Session) # Связь с таблицой Session
        name_board = models.CharField(max_length=1024) #Страницы для отслеживания
        expire_date = models.DateTimeField() # Время жизни
        active = models.CharField(max_length=1024, blank=True) #Отслеживание действий на странице
        thread = models.TextField(blank=True) #Страницы для отслеживания


    После чего во вьюхе описываю работу с сессиями и Mysession.
    request.session.set_expiry(3600) #Задаю нужное мне время жизни сессии
        request.session.save()
    
        if len(MySession.objects.filter(session_key=request.session.session_key)) != 0:  # Проверяю, есть ли информация о данной сессии в Mysession, и есть ли информация о посещении данной страницы. Если информация нет, то добавляю.
            session = MySession.objects.get(session_key=request.session.session_key)
            if name_board in session.name_board:
                pass
            else:
                session.name_board += ', ' + name_board
            session.save()
        else:        MySession.objects.create(session_key=Session.objects.get(pk=request.session.session_key), name_board=name_board, expire_date=Session.objects.get(pk=request.session.session_key).expire_date)
            session = MySession.objects.get(session_key=request.session.session_key)
            session.save()


    Дальше я создаю собственную команду django, для удаления всех сессий чьё время жизни истекло и дальнейшим подсчетом кол-ва оставшихся сессий. Считать буду через сигналы
    usr_hour = Signal(providing_args=[]) # Создание сигнала
    
    class Command(BaseCommand):
    
        def handle(self, *args, **options):
            now = timezone.now() # Задаю время для проверки жизни сессий
            two_hour = now - datetime.timedelta(hours=2)
            MySession.objects.filter(expire_date__range=(two_hour, now)).delete()
            Session.objects.filter(expire_date__range=(two_hour, now)).delete()
    
            usr_hour.connect(my_callback) #отправляю сигнал
            usr_hour.send(sender=self.__class__)
            usr_hour.disconnect(my_callback)
    
            self.stdout.write('Succes')


    Сигнал
    def my_callback(sender, **kwargs):
        boards = Board.objects.all()
        for x in boards:
            x.board_in_hour = MySession.objects.filter(name_board__contains=x.board_shortcut).count()
            x.save()


    Добавляю запуск команды db_hour на крон каждый час. Таким образом можно посчитать кол-во юзеров за каждый час на опр. страницах
    Ответ написан
    Комментировать
  • Как вы деплоите django приложение на сервер?

    @fesworkscience
    Развернул django+uwsgi+nginx

    На локали - все ветки и все push в мастер.
    На VPS - git pull, makemigrations, migrate, collectstatic, touch uwsgi.ini

    <30 сек
    Ответ написан
    6 комментариев
  • Как классифицировать текст с помощью нейронной сети?

    @it2manager
    Для решения вашей задачи необходимо изучить алгоритм Байеса (bazhenov.me/blog/2012/06/11/naive-bayes) и использовать библиотеку pymorphy2 для выделения нормальной формы слов. Все реализуется за пару дней на phyton. Работает с точностью до 90%, в тех случаях которые вы описали.
    P/S/ У нас работает для автоматической классификации запросов от пользователей :) Классификатор достаточно ветвистый. Мы не использовали готовые библиотеки для алгоритма -хотелось поиграться самими. В качестве БД используется sqllite.
    Ответ написан
    Комментировать
  • Как классифицировать текст с помощью нейронной сети?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Такой шаблон вижу:
    (ищу|подскажите|где найти|помогите|требуется|нужен) (мастер|[[[профессия1]]]|[[[профессияN]]])
    Ответ написан
    2 комментария
  • Как классифицировать текст с помощью нейронной сети?

    Arseny_Info
    @Arseny_Info
    R&D engineer
    1) Почистить данные (убрать стоп-слова, спецсимволы, привести в нормальную форму и т.п.)
    2) Векторизовать данные (bag of words, tf-idf, n-grams... )
    3) Разделить выборку на train/test.
    4) Собственно, обучить классификатор (не начинайте с нейросетей, начните с чего-то более простого типа random forest).
    5) Сделать кросс-валидацию, ужаснуться от результата, начать чинить проблемы на каждом шаге.

    Очень базовый туториал scikit-learn.org/stable/tutorial/text_analytics/wo... Гораздо менее базово - nlp.stanford.edu/IR-book/.
    Ответ написан
    Комментировать
  • Как в Django завершить скрипт?

    saintbyte
    @saintbyte
    Django developer
    Сделай return из функции handle.
    Ответ написан
    Комментировать
  • Как победить ошибку 504 Gateway Time-out на стеке Django→uWSGI→nginx?

    sim3x
    @sim3x
    Никогда так не делать

    Тебе нужно запустить скрипт и отвалиться с кодом 200
    Для такого рода вещей можно делать разного рода колхозные решения (запуск скрипта из крона с периодичностью 1 мин, вотчер на файловую систему) или работа с Celery

    В баше типичного убунту есть переменная $USER и можно сделать переменную для текущей сессии баша export $SITE_NAME=www.foo.bar

    cd $HOME
    ===
    cd

    Изменять ./configure для nginx не обязательно - по-умолчанию он вполне ок
    Делать make install не следует или следует все ставить в /opt

    Как вариант мануал для сборки деб https://serversforhackers.com/compiling-third-part...

    Директория /etc/nginx/sites-enabled/ уже давно не актуальна
    Используй /etc/nginx/conf.d/
    Ответ написан
    2 комментария
  • Какой максимально эффективный способ защиты от скачивания изображений с сайта вы знаете?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Самое простое - Watermark.
    2. Сложнее - частичная доставка с сервера выбранной области изображения с шифрованием и расшифровкой на клиенте, и никогда не отображать изображение целиком. (т.е. типа контейнера со скроллом внутри канваса по аналогии с гугл-мапс).
    3. Хардкорный стиль - Adobe Flash Application!
    4. "Puzzle" - "хаотичная" (только с виду!) динамическая нарезка в режиме спрайт-карты и сборка через js. Формула - тоже разная каждый раз.
    5. "Калька" - многослойное изображение из нескольких с альфа-каналом (с прозрачностью)
    6. Класть изображение в JS-контейнер на серверной стороне, помещая в него метод отображения с привязкой к IP и браузеру клиента, и ровно на 15 секунд (чтобы загрузил и всё) и бинарные шифрованные данные, после загрузки скрипта у клиента - запрашивать токен с сервера на расшифровку данных.
    (методы можно комбинировать)
    Ответ написан
    4 комментария
  • Как защитить свою верстку от рипа?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    нечисто тут - чел посредник

    когда для себя и есть опыт с фрилансом - заказчик сам старается быстрее заплатить аванс

    обратная сторона - чем больше заплатишь, тем больше вероятность "пропадания" нового фрилансера - тоже известна, поэтому 100% оплата после сдачи проекта - всегда, но аванс должен идти как можно быстрее
    Ответ написан
    Комментировать
  • В каких случаях вы использовали Redis?

    miraage
    @miraage
    Старый прогер
    Помимо всего вышеуказанного:

    - рейтинги топ100
    // update player value on corresponding event
    ZADD ratings_gold <value> <playerId>
    // fetch top100 later
    ZREVRANGEBYSCORE ratings_gold +inf -inf WITHSCORES LIMIT 100


    - накопление промежуточных данных с последующим перзистом в базу
    Ответ написан
    Комментировать
  • Как прикрутить оплату к django?

    @aLap
    Всегда сами пишем взаимодействие с платежной системой на основании их описания протокола, думаю, так все делают, это вправду несложно.
    Ответ написан
    Комментировать
  • Не создаются таблицы из модели?

    zelsky
    @zelsky
    В папке migrations должен быть файл __init__.py ОБЯЗАТЕЛЬНО
    Потом в терминале
    manage.py makemigrations appname
    manage.py migrate
    # если джанга ниже 1.8
    manage.py syncdb
    Ответ написан
    2 комментария
  • Не работает iframe ... От слова совсем! Что за магия?

    edli007
    @edli007
    full stack, team lead
    Не отображается думаю из-за заголовка
    X-Frame-Options:SAMEORIGIN

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

    а seamless не кросбраузерный пока, да и высота фрейма в нутри которого скрипты, понятие весьма растяжимое в буквальном смысле.
    Ответ написан
    3 комментария