• Пропадает память. Как тренировать?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Как человек, который прошел это же самое годы назад скажу вам так:

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

    - второе - банальное утомление. Да, теперь вы устаете быстрее и легче и под это надо адаптироваться. В 20-25 можно не спать пару суток подряд, пилить код 20 часов не вставая, питаться одной кока-колой с дошиком и раз в неделю спать до упора, просыпаясь как огурчик. После 30 такое уже не работает. Поэтому, в порядке важности:
    1. качественный сон и его гигиена. 30 лет это время самого большого недооценивания этого фактора (раньше то спал как хотел и бодрячком)
    2. нормальное питание и физическая активность. Не надо быть веганом или упарываться на стадионе - просто сбалансированная еда, не переедать, и тренажерка/что-то активное несколько раз в неделю
    3. распорядок дня - уметь управлять нагрузкой и отдыхать. Это тоже то что нужно переосмыслить. "поднапрягусь и сделаю" или "ну я ж в потоке, поем вечером" "сегодня подольше посижу, завтра посплю больше" - это все во вред.

    Эти три пункта - самые банальные, самые эффективные и самые сложные для выполнения в реальности.
    "попить витаминки-ноотропы", "взять себя в руки" или "наладить внутренние энергии" - НЕ работает, но крайне популярно, потому что, во-первых, успокаивает (что тоже дает свой небольшой эффект), а во-вторых - делать на самом деле особо ничего не надо, все как мы любим :). Потом придете к "банальному" просто позже и в более худшем состоянии.
    Ответ написан
    7 комментариев
  • Что почитать, чтобы полностью разобраться в асинхронности Tornado?

    tormich
    @tormich
    программист и гик.
    если коротко: когда ты зовёшь асинхронный метод ты хочешь в итоге отдать кому-то (оси или другому процессу) саму работу. для примера - когда ты делаешь что то типа
    http_client = AsyncHTTPClient()
    response = await http_client.fetch(url)

    то по сути питон в итоге отдаст операционке дожидаться ответа, а сам вернётся в иолуп и будет выполнять что то другое пока ось не позавёт его колбек.
    Тут можно почитать подробней про то что происходит под капотом https://habr.com/company/infopulse/blog/415259/

    З.Ы.
    в случае с изображением наверное лучшее что можно сделать это отдавать сам джоб в отдельный процес.
    Ответ написан
    Комментировать
  • Python: как проверить URL на правильность?

    @throughtheether
    human after all
    Scrapy глохнет при скармливании ему неправильного URL.
    А вы пробовали к ресурсу, адресуемому этим URL, обратиться браузером? У меня открывается статья, с библиографическим номером 2002JIMO...30..199R. Более того, при помощи requests я получаю HTTP 200 в ответ на HEAD:
    >>> import requests
    >>> response = requests.head('http://adsabs.harvard.edu/full/2002JIMO...30..199R')
    >>> response
    <Response [200]>

    Есть мнение, что вы не до конца понимаете проблему, которую хотите решить. Предлагаю разобраться, почему
    Scrapy глохнет при скармливании ему неправильного URL
    (и так ли это вообще, может быть, эти явления не связаны). Может быть, сайт временно не работоспособен? Может быть, сервер вас (или ваш прокси) блокирует? Может быть, это ошибка Scrapy?
    Зафиксируйте URL и проверьте, всегда ли (при каких условиях) Scrapy его [не]корректно обрабатывает.
    Ответ написан
    2 комментария
  • Что такое enterprise разработка на самом деле?

    @miksir
    IT
    Enterprise разработка - это разработка, направленная на решение проблем бизнеса. В отличии от разработки для решения проблем конечных пользователей.

    На самом деле нет каких-то зафиксированных принципиальных характеристик, которые присущи только EA. По-этому, в разговорной речи понятие "энтерпрайз" может значить весьма разные вещи. С одной стороны энтерпрайз - не про увлечение модой с переписыванием всего, как только появится новый тренд. Ибо это _дорого_, так как цена ошибки дорога. С другой стороны - совсем не обязательно, что это 20-летние технологии. Конкретный бизнес сам для себя выбирает модели развития и обновления стека технологий. С одной стороны - это сложность ПО, бизнес-логики. С другой - сложность понятие весьма относительное.

    Но если все же пытаться выделить какие-то характерные черты, я бы назвал несколько:
    * устойчивость к трендам (использование их, когда они пройдут стадию моды и перейдут к стадии заинтересованности крупными игроками, ибо никому не нужны технологии, которые через год умрут и их поддержка будет дорожать каждый день).
    * сложная и непостоянная бизнес-логика, давление на нее из множества источников
    * результат сложной переменчивой бизнес-логики в совокупности с длительным использованием продукта приводит к целям снижения стоимости поддержки за счет стоимости первоначальной разработки, производительности и потребляемых ресурсов. ООП, SOLID, Unit Test/TDD, DDD - все эти популярные буквы - последствия "энтерпрайза", когда мы готовы серьезно подходить к написанию кода для облегчения его последующего изменения.
    * слабо заметный вклад конкретного программиста, проистекает из сложности ПО

    Требования к программисту... ну я бы сказал, усидчивость, вдумчивость, исполнительность... хм, а что, в каких-то других областях другие требования к программистам? Хотя, конечно, в противоположность, можно назвать способ разработки "быстро-быстро и в продакшн". Но, к слову, такие ситуации могут и в энтерпрайзе возникнуть.

    По-этому, стоит рассматривать не энтерпрайз/не энтерпрайз, а конкретные компании с конкретными требованиями и циклами разработки.
    Ответ написан
    1 комментарий
  • Как написать макрос в Sublime Text 3?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    создаешь сниппет

    <snippet>
        <content><![CDATA[(${0:$TM_SELECTED_TEXT}/2)]]></content>
        <tabTrigger>dd</tabTrigger>
        <scope>source.js</scope> //тут указываешь виды файлов где будет работать сниппет. можно через запятую
        <description>dd</description>
    </snippet>


    сохраняешь сниппет в папке саблайма. примерно сюда "C:\Users\*username*\AppData\Roaming\Sublime Text 3\Packages\User\dd.sublime-snippet"

    дальше идешь в Preferences -> Key Bindings и забиваешь клавишу.
    {
    		"keys": ["ctrl+shift+1"], 
    		"command": "insert_snippet",
    		"args": {"name": "Packages/User/dd.sublime-snippet"}
    	}


    собственно все. при выделении любого текста и нажатии ctrl+shift+1 саблайм обернет его в ( *тут текст* /2)
    Ответ написан
    Комментировать
  • Как вы создаете себе обстановку для программирования?

    @DmitriySwan
    Поклей обои с двоичным кодом зеленого цвета, как в матрице на заставке. Купи несколько мониторов, где на нескольких будет открыта командная строка, еще поищи побольше всяких проводов, чтобы торчали из системного блока. Носи всегда кофту с капюшоном. Спи днем, просыпайся ночью. Не открывай двери без особой нужды. Вроде все. Думаю, будет переть на программирование.
    Ответ написан
    3 комментария
  • Что написать в конфиге Nginx для отдачи .html?

    Lynn
    @Lynn
    nginx, js, css
    Можно попробовать примерно так:

    server {
        listen 80;
        server_name doc.ixley.ru;
        root /var/www/doc.ixley.ru/out/;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri.html $uri/ =404;
        }
    }
    Ответ написан
    1 комментарий
  • GIT: Как подсчитать вклад каждого разработчика?

    @barbarisbk
    просто количество коммитов по пользователях
    git shortlog -s -n
    Ответ написан
    Комментировать
  • Как кодировать строку с символами из разных кодировок?

    @opravdin Автор вопроса
    Решил проблему через костыль: так как в моем случае конфликт только с кавычками "ёлочками", я проверил, относятся ли байты \xab и \xbb к буквам Ы (\xd0\xab) и л (\xd0\xbb). Если нет, то заменял на пробел.
    text=bytes()
    i=0
    while  i<=len(rawtext)-1:
    	if rawtext[i]==187 and rawtext[i-1]!=208:
    		text+=bytes([32])
    	elif rawtext[i]==171 and rawtext[i-1]!=208:
    		text+=bytes([32])
    	else:
    		text+=bytes([rawtext[i]])
    	i+=1
    return(text.decode('utf-8', 'ignore'))
    Ответ написан
    Комментировать
  • Как реализовать фильтры товаров django?

    Посмотрите на django-hstore (при условии, что вы можете использовать PostgreSQL). Это поле, в котором можно хранить произвольное число пар ключ - значение. Таким образом, общие для всех видов товаров поля вы храните как обычные поля модели, а меняющиеся поля пакуете в hstore. По этим запакованным полям можно даже делать поиск, за счёт того, что HStore - это родной для PostgreSQL тип данных.

    Ещё вы можете использовать тип JSON, тоже специфический для PostgreSQL. Отличается от hstore тем, что структура поля может быть древовидной и значения - типизированными (собственно, что и предполагает JSON). Пакетов, которые поддерживают это поле в Django, существует несколько, можно погуглить.

    Также вариантом является упомянутый EAV, но лично мне очень не нравится этот подход. Отсутствие контроля типов, крайне низкая скорость на больших объёмах и общая уродливость решения. SQL-база данных создана не для того, чтоб её как key-value использовать. Лучше уж немного расширить её возможности костылями типа hstore.
    Ответ написан
    2 комментария
  • Что делает программиста программистом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) это кодер
    2) да, но еще немаловажно умение их строить
    3) код-манки
    4) код-манки
    5) хипстер
    6) бизнес-аналитик, что в принципе норм. Программист должен в первую очередь решать задачи бизнеса а не код писать (это метод решения проблем), а для этого надо какое-никакое о погружение в предметную область
    7) это справедливо для всех специальностей.

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

    В целом... почитайте Эрика Эванса, Предметно Ориентированное Проектирование - он там чуть уделяет внимание задаче девелопера.
    Ответ написан
  • Как вернуть мотивацию к обучению?

    Мне 16 лет.
    Мотивация у самого меня большая. Еще с 6 лет понял, что мой путь это явно что-то в it-сфере, когда впервые сел за компьютер. Начинал пытаться программировать(если "хеллоу ворлд" можно назвать программированием) в 9 лет.
    Всегда считал, что я что-нибудь такое создам неповторимое, того чего еще нет и буду много зарабатывать.
    Да и сейчас так считаю :)
    Когда занимаешься изучением программирования, никогда не думай что это бесполезно потому что реализовать себя в этой сфере можно очень круто. Так круто, что во многих других сферах ты этого сделать не сможешь.
    Просто набирайся опыта, читай, изучай все новое и вскоре, если будешь упорным и знать того, что ты хочешь, ты определенно добьешься успеха.. Желаю удачи!
    Ответ написан
    7 комментариев
  • Как в Django CBV реализовать условие if/else?

    @marazmiki
    Укротитель питонов
    Наследование, конечно, позволит избавиться от дублирования кода, но есть два момента: во-первых, Вы меняете функциональное назначение get_object() и заставляете его что-то записывать, что само по себе некрасиво с точки зрения программиста :) если уж идти этим изначально неверным путём (ниже объясню почему неверным), то, думаю, красивее было бы переопределить dispatch().

    Во-вторых и главных, делать сохраняющие операции на HTTP-методы GET, HEAD и OPTIONS не рекомендуется никому. Хотя бы из тех соображений, что через несколько секунд после того, как Вы впервые их запросите, налетят всякие гуглоботы и накрутят счётчики. И хорошо ещё, если отказ в обслуживании не вызовут.

    Считается хорошим тоном и признаком здравого смысла использовать для сохраняющих вьюшек метод POST. Или, что ещё лучше, использовать RESTful-подход с POST, PUT и DELETE для создания, изменения и удаления соответственно.

    Конкретно в Вашем случае, мне кажется, для вьюхи инкременатции счётчика лучше всего использовать FormView. Или UpdateView, там уже реализован метод get_object().
    Ответ написан
    3 комментария
  • Нужно ли знать html/css/js для работы в django?

    @bromzh
    Drugs-driven development
    Для изучения джанго это знать не нужно. Для финального результата нужно (если ты конечно планируешь работать в этой сфере).
    Ответ написан
    Комментировать
  • Как правильно работать на oDesk?

    jff
    @jff
    Автор блога и форума про фриланс jff.name
    Хоть вопрос и старый, решил все-таки написать свое мнение, для тех кто приходит с поисковиков.
    1) С 3G интернетом (500kb и большие пинги) работать будет неприятно, но вполне возможно, потому что частенько необходимо пообщаться с заказчиком по скайпу, а также обменятся большими файлами. Для веба это особенно важно, при работе с сайтом напрямую по ftp.
    2) Отказаться от работы можно без всяких последствия до старта контракта(то есть даже на этапе интервью и приглашения на работу от клиента можно отказаться без последствий). Если проект уже в процессе, то единственным правильным вариантом будет договорится с заказчиком, вернуть ему все деньги и попросить не ставить отзыв, многие идут на встречу. Плохой отзыв можно сильно повлиять на успешность, если он единственный, в противном случае все поправимо.
    3) Если получили много отрицательных отзывов, то стоит регистрировать новый аккаунт и впредь быть более осторожным и профессиональным, ведь плохие отзывы не ставят просто так.
    4) Большинство заказчиков с понимаем относятся к увеличению бюджета и сроков проекта, особенно если изначальное ТЗ было не идеальным(в большинстве случаев). Однако есть и дотошные и непонимающие заказчики, но их обычно легко определить еще на этапе интервью и не начинать с ними работать.
    5) Быть в онлайне постоянно не обязательно, обычно назначается время, например каждый вторник и четверг вечером для обсуждения текущего прогресса. Однако при релизе проекта или плотном взаимодействии с командой клиента нужно быть онлайн каждый день хотя бы несколько часов.
    6) Из личного опыта: работаю пару дней без отдыха, но зато потом 2-3 дня полностью отдыхаю и успеваю делать при этом несколько проектов параллельно. На мой взгляд у меня как фрилансера намного больше свободы, чем когда я работал в офисе.
    7) Обычно все баги учитываются в тайм трекинге и оплачиваются, но это надо заранее обговорить с заказчиком, чтобы не было недопонимания.
    8) Если лимит исчерпан то стоит доделать текущий milestone до логического конца и ставить перед клиентом вопрос ребром, либо увеличение квоты времени, либо отказ от проекта. Однако если вы заранее указали сроки и совсем в них не попали, то это скорее ваша вина и стоит работать бесплатно и в следующей раз быть осторожней.
    9) При фуллтайме работа на oDesk может приносить от 3-4k$ в месяц. Так что вывод очевиден.
    10) 1-2 дня задержки обычно не влияют, но профессиональные фрилансеры сразу ищут возможности сообщить об этом клиенту и если необходимо(баг исправить срочно) поработать через резервный канал (сосед или кафе).
    11) На мой взгляд лучше не брать долгосрочные заказы, пока точно не определитесь, хотите ли вы заниматься фрилансом полностью или нет. Усидеть на двух стульях не получится.
    12) Никакой лени нету у фрилансера. Наоборот даже. В офисе есть комманда, есть менеджер, на котором вся ответственность, а в фрилансе вы отвественно за любой свой косяк и это сильно дисциплинирует.
    13) Задания в фрилансе есть разные, от разработки алгоритма с сильным мат аппаратом, до набора текста с картинок. На не тупых программистов, хотя бы с начальным английским больше спроса чем предложения в данный момент.
    14) Наилучший вариант при форс мажоре и длительном отсутствии. Найти нового исполнителя заказчику и ввести его в курс дела.

    Больше информации можно найти в моем блоге про фриланс - jff.name
    Ответ написан
    1 комментарий
  • Может кто-нибудь поделиться универсальными примерами ajax для Django?

    crazyzubr
    @crazyzubr
    Python backend-developer
    Если нужно что-то универсальное, то берется REST Framework, но, конечно же, нужно читать документацию по нему.

    На моей практике обычно подобные скрипты пишутся каждый раз, как в первый раз) Зависит от проекта, конечно.

    По идее в твоем коде нужно проделать минимум изменений.
    Во-первых, нужно скорректировать вьюху, чтобы она отдавала json-данные. Тут можно выбрать способ из нескольких вариантов. Например, с class-based-views или заюзать декоратор render_to_json для обычной вьюхи из вспомогательного пакета handy.

    В клиентской части совсем простой код получится, если иcпользовать популярный фреймворк JQuery, конечно же.
    $('.vote').on('click', function(ev){
           ev.preventDefault();
           var $this = $(this);
            $.post($this.attr('data-url'))
             .success(function(data){
                 if (data.error){
                     alert(data.error);
                 }else if (data.voted){
                     alert('Спасибо за ваш голос!');
                 }
             })
             .fail(function(){
                 alert('Возникла ошибка. Попробуйте позже.');
             })
        });


    Соответственно у ссылки должен быть указан атрибут data-url со ссылкой c ID для вьюхи vote.
    Ответ написан
    Комментировать
  • Django vs Flask?

    nextel
    @nextel
    ненавижу javascript
    НУ и в 1000 раз:
    джанга - туча батареек, жесткая структура приложульки, думать не особо не надо
    проблемы - все что джанга не подразумевает, типа шаблонизатор пошустрей, орм другую и бла бла бла, прикручивать замучаешься, плюс разварачивать ее на боевых серверах задача тож не сложная но гемморойная.
    фласк - я люблю фласк))))) что захотел то и прикрутил, плагины писать легче легкого, потому можешь своих костылей навоять сколько душе угодно,шустро развернуть на сервере? не проблема, посадить на Торнадо легче легкого , ну собственно все это же является и его недостатком. Ну и собственно совет по сравнению Вот)
    Ответ написан
    Комментировать
  • Как можно организовать в Python таблицу (GUI)?

    zxmd
    @zxmd
    PyQt - там все есть :)
    Ответ написан
    Комментировать
  • Книга "Python for Kids" переведена ли на русский?

    Дело нужное, в России есть попытки в школах пересесть с Pascal на Python. Что верная тенденция. Я бы поучаствовал в переводе книги, дело полезное.

    Ответ написан
    Комментировать
  • Написание cms. Python vs Php.

    inlanger
    @inlanger
    Django программист

    В свое время перешли от Wordpress к Django по многим причинам. Одна из главных причин это сам язык - на Python оказалось писать намного приятнее и быстрее. Кастомизация Wordpress иногда напоминает танцы с бубном - часто не ясно где вылезет очередной баг. В этом плане Django оказалась намного предсказуемее, что в итоге выливается в более быстрый процесс разработки и поддержки проектов. Но иногда мы используем Wordpress, но только тогда, когда заранее видно что это проект идеально вписывается в концепцию CMS и не нужно будет городить велосипедов.

    Ответ написан
    1 комментарий